【发布时间】:2018-03-07 07:44:37
【问题描述】:
我有一些随机的 2D 数据 fuffa 保存到文件 fuffalo:
fuffa=rand(10,10);
save('fuffalo','fuffa', '-v7.3')
然后,我会执行一个循环,该循环生成我想要(在第三维中)附加到已保存变量的其他 fuffa 数据。为此,我尝试应用this 建议:
m1 = matfile('fuffalo.mat', 'Writable', true);
for ii=1:3
fuffa2=rand(10,10);
m1.fuffa(1:10,1:10,end+1)=fuffa2;
end
但是,在ii=2 我收到以下错误:
变量 'fuffa' 在文件中有 2 个维度,这与索引下标中的 3 个维度不匹配。
如何说服 MATLAB 在第三维中追加?
【问题讨论】:
-
你能在第一维追加吗?
fuffa = rand(1,10,10) -
是的,我猜。你知道为什么会这样吗?
-
因为 matlab 会在前两个之后自动删除尾随单例维度。
-
不是(仅)在
ii=2,您也应该收到ii=1的错误 -
前两个维度。不是条目。所以 [20 x 1] 向量保持 [20 x 1] 向量。但是 [20 x 20 x 1] 矩阵变成了 [20 x 20] 矩阵。第三个,单例,维度被删除。这是 matlab 的怪癖之一。