0

我通过附加值将在for循环中计算的字段变量存储在向量中,但是我想先预分配性能。我试图对这个操作进行矢量化,但它并没有给我想要完成的任务。我已经把操作的例子放在下面。我该如何进行预分配?为了速度。

j=('load raw.mat');
var=fields(j);
val_mat=[];
kk=fieldnames(j);
for i=(length(kk)-Var_no)+1:Var_no+(length(kk)-Var_no)
val_mat=[val_mat j.(var{i})];
end
4

1 回答 1

3

根据您的代码,您似乎正在尝试获取存储在其中的所有变量raw.mat并将它们连接起来。为此,您可以将循环替换struct2cell为将所有字段值转换为值的元胞数组,然后用于cat连接它们

data = load('raw.mat');
values = struct2cell(data);
val_mat = cat(2, values{:});

由于我们已经删除了循环,因此无需预先分配。

我还冒昧地将您的代码重写为有效的 MATLAB 代码。

于 2016-11-23T15:29:23.120 回答