在MATLAB中创建一个包含字符串和浮点数的矩阵

时间:2013-03-08 21:36:53

标签: matlab matrix

我想要一个矩阵,第一行是标题(我使用的每种不同近似方式的磁场)和我使用的每个数据表的结果。

我试图得到这个结果(例子):

FieldB =  
B1   B2   B3  
1.0  2.0  3.0  
1.1  2.7  2.3  
...  
...  
...  
0.7  2.4  5.8

现在,我正在按照这个编程

B1(1,1)= 'Field 1';  
B2(1,1)= 'Field 2';  
B3(1,1)= 'Field 3';  
for i=1:n  
    B1(i+1,1)=polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;  
    B2(i+1,1)=polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;  
    B3(i+1,1)=polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;  
end  
FieldB = [B1 B2 B3] 

给出的错误是:

Subscripted assignment dimension mismatch.

Error in 3field (line 32)
B1(1,1)= 'Field 1';

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您无法在Matlab中将字符串存储在数组中。尝试使用单元格数组。您只需将[]更改为{},即可在此处执行此操作。

答案 1 :(得分:1)

在matlab中,标准矩阵中不能包含数字和字符串。因此,您需要使用其他数据类型来实现目标。

在您的情况下,结构(see here)将是最自然的选择:

B(1).name = 'Field 1';
B(2).name = 'Field 2';
B(3).name = 'Field 3';

for i=1:n  
    B(1).data = polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;
    B(2).data = polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;
    B(3).data = polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;
end  

您还可以使用cell array

B{1,1} = 'Field 1';
B{1,2} = 'Field 2';
B{1,3} = 'Field 3';
...
for i=1:n  
    B{2,1} = polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;
    B{2,2} = polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;
    B{2,3} = polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;
end