Matlab 读取电子表格,每个单元格有2个值作为(n,j,2)矩阵

Matlab 读取电子表格,每个单元格有2个值作为(n,j,2)矩阵,matlab,xlsread,Matlab,Xlsread,我使用xlsread以二维矩阵的形式读取电子表格,但我需要以 2,2 2,0 0,2 1,1 作为2,2,2矩阵 有没有办法使用Matlab来分离单元格的值,或者我必须在电子表格中使用两个单独的矩阵如果电子表格中的数据是每个单元格一个数字,只需将数据导入2D数组即可。“重塑”命令可以改变数组的维数,但有时要按照您想要的方式重新排序有些困难。该代码将获取大小为Rx(2C)的2D向量M,并将其转换为大小为[R C 2]的3D数据块,在原始数据行中交替页面。用你的数字很难判断它是否有效,

我使用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'}
对细胞进行手术是一种痛苦。我想不出一种没有“for”循环的方法,但是一旦你这样做了,分配到第三维度就很容易了

    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

这将是一个带有字符串数组的2d矩阵,然后分离这些值并生成一个新的矩阵,谢谢你的帮助。