【发布时间】:2019-04-29 11:13:34
【问题描述】:
有两个问题。
---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×152,右侧大小为 1440×151。
我发现有一个额外的列填充了“0”。这次我手动删除了这一列,但是有什么方法可以保留 3d 形式(立方体矩阵?),通过自动用“0”填充较小矩阵的列/行或丢弃额外列/行中的数据更大的矩阵?
谢谢!
【问题讨论】:
-
您的第一个代码块完全错误。您不会“分配给更大的矩阵”,而是覆盖它。在分配
b之前和之后检查a的大小:它已从5,5,2更改为1,3。 -
无法访问实际数据,很难回答您的任何问题。更具体并发布每个人都可以遵循的示例代码将大有帮助
-
谢谢阿德里安,你是对的!它正在覆盖