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 に答える