5

成功せずに構造体配列を別の配列に渡そうとしています。

s(1).f = (1:3);
s(2).f = (4:6);
s(3).f = (7:9);

q(1).n = 'nameA';
q(2).n = 'nameB';
q(3).n = 'nameC';
q(3).f = [];

q.f = s.f

フィールドnは変更しないでください。

私は何かが恋しいですか?

4

4 に答える 4

2

どうですかarrayfun

q = arrayfun( @(x,y) setfield( x, 'f', y.f ), q, s );

どうやらsetfield、構造体配列に1つの構造体要素を設定するためだけです-したがって、arrayfun.

EDIT:ダン
によって与えられたはるかに良い答え。

于 2013-02-28T11:32:10.807 に答える
2

構造体の配列の各フィールドを cell 配列に直接代入してから、 を使用dealして構造体を cell 配列に変換できます。

s(1).f = (1:3);
s(2).f = (4:6);
s(3).f = (7:9);

q(1).n = 'nameA';
q(2).n = 'nameB';
q(3).n = 'nameC';

c = cell(3,1);
[c{:}] = deal(s.f);
[q.f] = c{:};

この種のことについての良い記事はここにあります

編集: または、シャイが指摘するように、あなたはただ行くことができます

[q.f] = s.f
于 2013-02-28T12:25:47.027 に答える
1

シャイのこの提案をもっと見やすくしたかったのは、読みやすいからです。

[q.f] = s.f

于 2013-03-01T03:02:02.020 に答える