我正在使用matlab并尝试将矩阵分配给单元阵列的一个单元格。然而,总有一些错误。这是代码:
C = {};
myMatrix = xlsread('myexcelfile');
C{'ID', 'info'} = myMatrix;
然后matlab提示
"预期来自大括号或点索引表达式的一个输出,但有12个结果。"
但如果我不使用ID'和'信息'但使用' 1'和' 2'相反,矩阵可以成功分配。
有人能帮帮我吗?谢谢!
答案 0 :(得分:0)
假设我们有三个人,每个人都有一个姓名和身份证号码,每个人对应的数据大小为2x3
。我利用一个单元格来存储数据并通过随机数填充它。(在你的情况下,你应该使用xlsread('myexcelfile')
来填充这个单元格)。每个ID号都用一个字符串连接起来,因为Matlab不接受一个直接由数字转换的字符串,用于表格的行和列中的名称。
clc;clear all;close all;
% assuming we have got three persons in the dataset
cell_data=cell(3,3); % I use cell instead of matrix for storing data
ID_number=[38;48;58];% this vector contains the ID numbers of each person
for i=1:numel(ID_number);rng('shuffle');cell_data{i,i}=rand(2,3);end % using random number as dataset
ID=strcat('ID ',string(ID_number));%'38' is not a valid variable name so concat number with 'ID ' string
Customer = string({'Jones';'Brown';'Smith'});
Customer = cellstr(Customer);
T = table('RowNames',Customer);
for i=1:numel(ID_number)
T.(char(ID(i)))=cell_data(:,i);
end
%
创建表后,我们可以按如下方式获取输入:
input_cell = inputdlg({'Name','ID number'});% 2x1 cell
ID_input=strcat('ID ',input_cell{2,1});
T( {input_cell{1,1}} , {ID_input} )
如果输入格式适应表格,我们可以得到如下输出:
table
ID48
____________
Brown [2×3 double]
对于输入未适应表格格式的情况,您可以为脚本添加一些条件。