3

たとえば、サイズが n*1 の I という構造体があり、複数のフィールドがあり、そのうちの 1 つが「area」と呼ばれているとします。以下のコードを試すと:

area = I.area

結果の領域には、構造体の最後の位置からの値が 1 つだけ含まれます。次のように for ループを使用する以外に、フィールド内のすべての値を正確に正確にする高速な方法はありますか。

for ii = 1:n; area(ii) = I(ii).area; end
4

2 に答える 2

1
area = [I.area]

I.areaI(1).area, ...のすべての値をI(2).areaコンマ区切りのリストとして返します。このリストは、関数のパラメータ リストや配列の初期化など、そのようなリストが期待される場所ならどこにでもプラグインできます。

編集: すべてI(i).areaが同じサイズの行ベクトルの場合。次に、最初にそれらすべてを水平に連結してから、目的の寸法に形状を変更できます。

area =  reshape([I.area], [2 length(I)])'

結果:

>> I.area

ans =

     3     4


ans =

     5     6


ans =

     7     8

>> reshape([I.area], [2 length(I)])'

ans =

     3     4
     5     6
     7     8
于 2016-09-24T04:36:19.957 に答える