Can I define a structure iteratively?

I am hoping to redefine a structure within each for-loop. Say, given a 1000-by-4 real vector Xs and a 1000-by-4 logical B,
value_i={[]};
fields_global={[]};
values_global={[]};
for i=1:30
for j=1:4
A = Xs(:,j);
C = A.*(B(:,j)*1);
E=C(find(C));
value_i={value_i,E};
end
Structure_i=struct('field_i',value);
Structure_global=struct(fields_global,values_global,'field_i',value_i)
fields_global={fields_global,'field_i'}
values_global={values_global,value_i}
value={[]}
end
MATLAB doesn't seem to appreciate my approach. Is this at all feasable? Is there another way to store

1 件のコメント

Ricardo  Gomez Uribe
Ricardo Gomez Uribe 2017 年 11 月 22 日
Is there another way to store, within each iteration, vectors of varying magnitude, and reference them in the output of a function as a structure?

サインインしてコメントする。

回答 (1 件)

Guillaume
Guillaume 2017 年 11 月 22 日

0 投票

It's not very clear what you're trying to achieve. As it is you're always creating the same field always called 'field_i'. You can't have multiple fields with the same name.
The simplest way to store several vectors of different length (if that's what you mean by magnitude) is to use a cell array.
results = cell(1, 30);
for i = 1:30
values = ...
results{i} = values;
end
You could use a structure with numbered fields instead but that would be more complicated for no benefit at all.

2 件のコメント

Ricardo  Gomez Uribe
Ricardo Gomez Uribe 2017 年 11 月 22 日
That should do it. Cheers!
Ricardo  Gomez Uribe
Ricardo Gomez Uribe 2017 年 11 月 22 日
One more question: can one code nested cells? That is, in your example,
results = cell(1, 30);
for i = 1:30
values = ...
results{i} = values;
end
could "value" be a cell array?

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

質問済み:

2017 年 11 月 22 日

コメント済み:

2017 年 11 月 22 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by