我正在通过附加值附加在向量中的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代码。