如何在matlab中存储字段变量时进行预分配

How to do preallocation in storing field variables in matlab

我通过附加值将在 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

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

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

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

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