MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

How to fill a 3D array with values calculated in a loop?

Niky Taylor さんによって質問されました 2017 年 10 月 23 日
最新アクティビティ Cedric Wannaz
さんによって コメントされました 2017 年 10 月 30 日
I want to fill a 3D array with values calculated in a loop. Each iteration of the loop generates a single new value which I want to put in an array, so that I end up with a 2D array of all the new values that correspond to their parent value in the old matrix.
D = rand(3,3,4);
d = rand(2,4);
for i=1:3;
for j=1:3;
E = [D(i,j,1);D(i,j,2);D(i,j,3);D(i,j,4)];
F = d*E;
end
end
How do I print each iteration of 'F' into a new array? F is a 2x1 matrix, so I'd like to have one 3x3 array with the F(1,1) values and a second 3x3 array with the F(2,1) values. I'd like to have the arrays separate, I know I can always concatenate them if I need all the data in one place.
I'm also open to suggestions if you think I've gone about this poorly. Thanks in advance.

  0 件のコメント

サインイン to comment.

タグ

1 件の回答

回答者: Cedric Wannaz
2017 年 10 月 23 日
編集済み: Cedric Wannaz
2017 年 10 月 23 日
 採用された回答

This would be one way to do it if you have MATLAB R2016b or newer:
A = sum( D .* permute( d(1,:), [1, 3, 2] ), 3 ) ; % First array.
B = sum( D .* permute( d(2,:), [1, 3, 2] ), 3 ) ; % Second array.

  1 件のコメント

Cedric Wannaz
2017 年 10 月 30 日
If this is working for you, please [Accept] the answer. If not, I am happy to discuss what is not working.

サインイン to comment.



Translated by