3D矩阵分配期间的尺寸问题

时间:2018-11-27 16:43:16

标签: matlab matrix

有两个问题。

--- 1 ---

我可以顺利地将较小的矩阵分配给较大的零矩阵,如下所示:

a = zeros(5,5,2);
b = [1 2 3];
a = b;

所以我尝试将RawData从文件加载到3D矩阵:

G = ["/Users/ripfreeworld/Documents/MATLAB/RawData/G01.txt",
    "/Users/ripfreeworld/Documents/MATLAB/RawData/G02.txt",
    "/Users/ripfreeworld/Documents/MATLAB/RawData/G03.txt",
    "/Users/ripfreeworld/Documents/MATLAB/RawData/G04.txt"];
rawdata = zeros(1500,200,4);
for i = 1 : 4
    rawdata(:,:,i) = load(G(i),'ascii');
end

它在第一次迭代时就卡住了,而没有从加载函数中获取任何数据。

然后,我用zeros()注释了这一行。并且第一次迭代成功。与以前的简单代码有什么区别?

--- 2 --- 第二个问题是:

  

无法执行分配,因为左侧的尺寸为   1440 x 152,右侧尺寸为1440 x 151。

我发现还有一个额外的列,其中填充了“ 0”。这次我手动删除了此列,但是有什么方法可以通过自动用“ 0”填充较小矩阵的列/行或丢弃多余列/行中的数据来保持3d形式(多维数据集矩阵?)更大的矩阵?

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢阿德里亚恩,第一个问题是从一个错误的考验开始的,它是通过覆写。 对于第二个问题,我找到了一个简单的解决方案,它很相似

p=zeros(5,10)*1/0;
for i=1:5
    for m=1:10
        if isprime((i-1)*10+m-1)
           p(i,m)=(i-1)*10+m-1;
        end
    end
end
>> p

p =

   NaN   NaN     2     3   NaN     5   NaN     7   NaN   NaN
   NaN    11   NaN    13   NaN   NaN   NaN    17   NaN    19
   NaN   NaN   NaN    23   NaN   NaN   NaN   NaN   NaN    29
   NaN    31   NaN   NaN   NaN   NaN   NaN    37   NaN   NaN
   NaN    41   NaN    43   NaN   NaN   NaN    47   NaN   NaN