【发布时间】:2018-09-09 20:57:02
【问题描述】:
我想知道重塑单元格的最佳做法。
假设我有一个 1x5 单元格,每个单元格中有 2 个观察值。在我的示例中,我将这个单元格 VAR。为了运行一个例子:
cbar=linspace(0,1,2);
for i=1:5
for j=1:2
VAR{i}(j)=i+cbar(j);
end
end
假设我想创建另一个 1x2 的单元格,并且每个单元格中有 5 个观察值 - 所以我正在重塑上面的 VAR 单元格。我接近这个的方式,这是行不通的,如下
for i=1:5
for j=1:2
VAR_new{j}(i)=VAR{i}(j);
end
end
由于某种原因,VAR_new 是空的。
我怎样才能正确地做到这一点?谢谢!
【问题讨论】:
-
为什么不直接使用 3D 数组(在这种情况下甚至可以使用 2D 数组)?效率更高,你可以用
permute做你想做的操作(甚至只是换位) -
对于这个例子,确实可以。我可以试一试。但无论如何,我仍然想知道为什么我正在做的事情不起作用。有什么想法吗,@LuisMendo?
-
你可以试试
mat2cell(reshape([VAR{:}],5,[]),5,repelem(1,10))吗? -
您需要将
for i=5更改为for i=1:5,其他循环也一样:-) -
“它不起作用”是什么意思?结果是一个单元格数组,1x10,每个单元格中有 5 个观察值