我已经使用xlsread来将电子表格读为二维矩阵,但我需要以
的形式读取电子表格2,2 2,0
0,2 1,1
作为2,2,2矩阵
是否有一种方法可以使用MATLAB将单元格值分开,或者我必须在电子表格中使用两个单独的矩阵
如果电子表格中的数据是每个单元格一个数字,则只需将数据导入2D数组即可。命令"重塑"可以改变数组的维度,但是有时候让事情重新排序您想要的方式有些棘手。该代码将采用RX(2C(大小的2D向量M,并将其变成大小[R C 2]交替页面的3D数据块。很难用您的数字来确定它正在工作,所以我使用了一个更容易跟踪的集合。
M = [1 2 3 4
5 6 7 8];
M = reshape(M,[size(M,1) 2 size(M,2)/2]);
M = permute(M,[1 3 2])
导致:
M(:,:,1) =
1 3
5 7
M(:,:,2) =
2 4
6 8
如果电子表格中的数据具有每个单元格被逗号分隔的两个值(如注释中所建议(,则它将导入MATLAB作为一系列单元格数组。考虑一个带有4个单元格(2x2(的电子表格,并具有以下数据:
[ 1,2 ][ 3,4 ]
[ 5,6 ][ 7,8 ]
在Matlab中,我们可以使用
加载它 [~,TXT]=xlsread('filename.xlsx');
和变量txt是:
TXT =
2×2 cell array
{'1,2'} {'3,4' }
{'5,6'} {'7,8'}
在细胞上操作是一种痛苦。我想不出没有"对于"循环的方法来做到这一点,但是一旦您这样做,分配给第三维就很容易。
M = zeros([size(TXT,1) size(TXT,2) 2]);
for ii = 1:size(TXT,1)
for jj = 1:size(TXT,2)
temp = sscanf(char(TXT(ii,jj)),'%f,%f');
M(ii,jj,:) = reshape(temp,[1 1 2]);
end
end
对于上述值
M(:,:,1) =
1 3
5 7
M(:,:,2) =
2 4
6 8