Inline Indexing to Dynamic Field Names
古いコメントを表示
How can I integrate and index function output into dynamic field names?
Example:
Say function y=fun(x) outputs an array of integers.
How can I implement:
Varnames=['var1' 'var2' 'varx' 'vary'];
TestStruct.(Varnames(index(fun(x),3))) = 0;
that is equivalent to: (for instance)
TestStruct.varx = 0;
or better yet, if varx is an array, a way to make it equivalent to:
TestStruct.varx(n) = 0;
Is there a way to tell a function that you are only interested int the nth element?
Thanks in advance,
採用された回答
その他の回答 (1 件)
Chaowei Chen
2011 年 8 月 31 日
1 投票
Varnames={'var1', 'var2', 'varx', 'vary'};
%if varx is scalar
TestStruct.(Varnames{1,3}) = 0
%if varx is array
TestStruct=struct(Varnames{1,3},zeros(10,1))
4 件のコメント
Paulo Silva
2011 年 8 月 31 日
+1 vote
Sean
2011 年 8 月 31 日
Jan
2011 年 9 月 8 日
@Sean: You can't. Do not waste time with searching for an inline version. Simply use a FOR loop to access a list of fields.
Walter Roberson
2011 年 9 月 8 日
Well, you can. But it is ugly and obscure and would have even experienced MATLAB programmers trying to figure out what is going on. A simple loop would be shorter, faster, and much much clearer.
カテゴリ
ヘルプ センター および File Exchange で Function Creation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!