1、创建一个 2×N 的单元数组 ascii_codes,并将 ASCII 码范围从 32 到 127 对应的代码值和符号存储到该数组中。将代码的数值(整数)存储在单元数组的第一行,即 ascii_codes{1,n}。将对应的符号(字符)存储在单元数组的第二行,即 ascii_codes{2,n}。考虑使用 char 函数将代码的整数值转换为字符。
以下是实现该功能的 MATLAB 代码:
ascii_codes = cell(2, 96); % 创建 2×96 的单元数组
for n = 1:96
code = 31 + n; % 计算当前 ASCII 码
ascii_codes{1, n} = code; % 存储数值
ascii_codes{2, n} = char(code); % 存储对应的字符
end
2、考虑一个包含数据集中每个人的全名、所属机构、电话号码和电子邮件的个人联系人数据集。创建一个脚本,用于手动输入数据(考虑使用 inputdlg 和 questdlg 函数)。收集一些数据样本(大约 10 个)。编写一个脚本,将收集到的数据转换为结构数组。将信息组织到以下五个字段中:名字、姓氏、所属机构、电话号码和电子邮件地址。
以下是实现该需求的 MATLAB 代码示例:
% 手动输入数据
num_samples = 10;
contact_data = cell(num_samples, 4);
for i = 1:num_samples
prompt = {'请输入全名:', '请输入所属机构:', '请输入电话号码:', '请输入电子邮件:'};
dlg_title = ['输入第 ', num2str(i), ' 个联系人信息'];
num_lines = [1 1 1 1];
def = {'', '', '', ''};
answer = inputdlg(prompt, dlg_title, num_lines, def);
if ~isempty(answer)
contact_data(i, :) = answer;
else
break;
end
end
% 将收集到的数据转换为结构数组
contacts = struct('name', {},'surname', {}, 'affiliation', {}, 'phone_number', {}, 'email_address', {});
for i = 1:size(contact_data, 1)
full_name = contact_data{i, 1};
name_parts = strsplit(full_name);
if length(name_parts) > 1
name = name_parts{1};
surname = name_parts{end};
else
name = full_name;
surname = '';
end
affiliation = contact_data{i, 2};
phone_number = contact_data{i, 3};
email_address = contact_data{i, 4};
contacts(i) = struct('name', name,'surname', surname, 'affiliation', affiliation, 'phone_number', phone_number, 'email_address', email_address);
end
上述代码首先使用 inputdlg 函数手动输入大约 10 个联系人的数据,然后将收集到的数据转换为结构数组,并将信息组织到指定的五个字段中。
3、编写一个脚本,将一个结构体转换为单元格数组。提取该结构体的字段名并保存到另一个单元格数组中。假设结构体中有一个表示联系人姓氏的字段,根据联系人的姓氏按字母顺序对结构体中的数据进行排序(考虑使用sort函数)。结合使用disp函数和blanks函数来显示包含五个字段名的标题。在标题行下方,打印出排序后的数据集(注意需要实现一个循环来完成此操作)。
可以按以下步骤编写脚本实现该功能:
- 使用
struct2cell函数将结构体转换为单元格数组; - 使用
fieldnames函数提取字段名并保存到另一个单元格数组; - 利用
sort函数根据联系人姓氏对数据集排序; - 结合
disp和blanks函数显示包含五个字段名的标题; - 用循环打印排序后的数据集。
以下是示例代码:
% 假设data是要处理的结构体数据集
% 将结构体转换为单元格数组
datacell = struct2cell(data);
% 提取字段名
datafields = fieldnames(data);
% 提取姓氏列(假设是第二列)
surnames = {data.surname};
% 对姓氏进行排序
[~, idx] = sort(surnames);
% 根据排序索引对数据集排序
sorted_datacell = datacell(:, idx);
% 显示标题
header = sprintf('%s%s%s%s%s', datafields{1}, blanks(10 - length(datafields{1})), datafields{2}, blanks(10 -

4003

被折叠的 条评论
为什么被折叠?



