【发布时间】:2019-01-06 04:55:43
【问题描述】:
假设我有一个 1000x2x10x10 的矩阵,目前我通过以下代码将它们放入两个元胞数组中,
for i=1:1000
tmp = seqs(i,1,:);
patterns{i} = tmp(:);
tmp = seqs(i,2,:);
labels{i} = tmp(:);
end
patterns{i} = tmp(:) 和labels{i} = tmp(:) 的目的是为了展平矩阵。我的问题是,是否可以像patterns{i}=seqs(i,1,:)(:) 这样简化代码?我试过这个,但 Matlab 不允许这样做,这就是为什么我目前必须使用临时变量 tmp。
【问题讨论】:
-
您可以使用
patterns{i}=reshape(seqs(i,1,:),[],1);像(:)那样重塑为一列。此外,您的代码可能可以使用mat2cell进行简化,但我不确定 sn-p 在做什么。也许发布一个具有所需输入和输出的最小示例 -
我的计算机上通常有一个名为
vec的单独函数来执行此操作。要回答您的问题,如果不通过一些函数(例如 reshape 或诸如此类)在 Matlab 中进行另一个内存调用,就无法做到这一点。