How to assign parts of one structure to another efficiently?

I have a structure, 'D', which contains 'name'. I would like to assign certain parts of this struct to another struct in an efficient manner. What I have now (which works) is the following:
j = 0;
for i = 1:length(D)
if ( m_u(i) ~= 0 )
j = j + 1;
temp(j).name = D(i).name;
end
end
In this code, the contents of 'D.name' are assigned to 'temp.name' if a vector component is not zero. Is there a more efficient way to do this?

 採用された回答

Sean de Wolski
Sean de Wolski 2014 年 6 月 19 日

1 投票

% Sample struct
x = struct('name',cellstr(('A':'I').'))
% sample index (your mu_i)
idx = rand(9,1)>0.5
% extract
[y(1:nnz(idx)).name] = deal(x(idx).name)

1 件のコメント

Joshua
Joshua 2014 年 6 月 20 日
Thank you very much, Sean. My code ends up being:
[temp(1:nnz(m_u)).name] = deal(D(m_u~=0).name);
This is an order of magnitude faster than the way I was doing this (~0.5 seconds to ~0.07 seconds!).

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

その他の回答 (0 件)

カテゴリ

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

質問済み:

2014 年 6 月 19 日

編集済み:

2014 年 6 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by