For Loop in 3D Array

16 ビュー (過去 30 日間)
MarshallSc
MarshallSc 2022 年 5 月 31 日
コメント済み: MarshallSc 2022 年 5 月 31 日
For 2D arrays, the operation that I want to execute is:
a = rand(3,3);
for i = 1:numel(a)
for j = 1:numel(a)
out(i,j) = (a(i) - a(j)) / (a(i) + a(j));
end
end
Which will turn the out into a skew-symmetric matrix. Now I want to perform the same operation instead the matrix is in 3D, how can I do that? The speed is important since my original matrix is (100,100,726). Thanks!

採用された回答

Dyuman Joshi
Dyuman Joshi 2022 年 5 月 31 日
編集済み: Dyuman Joshi 2022 年 5 月 31 日
a = rand(3,3,4);
for k=1:size(a,3)
y=a(:,:,k);
for i=1:size(y,1)
for j=1:size(y,2)
out(i,j,k)=(y(i) - y(j))/(y(i) + y(j));
end
end
end
out
out =
out(:,:,1) = 0 0.6498 -0.1418 -0.6498 0 -0.7248 0.1418 0.7248 0 out(:,:,2) = 0 -0.6166 -0.5396 0.6166 0 0.1154 0.5396 -0.1154 0 out(:,:,3) = 0 0.1018 0.1400 -0.1018 0 0.0387 -0.1400 -0.0387 0 out(:,:,4) = 0 0.2123 0.1857 -0.2123 0 -0.0277 -0.1857 0.0277 0
  2 件のコメント
Dyuman Joshi
Dyuman Joshi 2022 年 5 月 31 日
It will be skew-symmetric matrix. I have made an edit, take a look at it again.
MarshallSc
MarshallSc 2022 年 5 月 31 日
Thanks, yeah, changing the i and j indices from 1:size(y,1) to numel(y) would do the trick. Thanks again!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by