MATLAB Answers

Vectorize 3 for loops

2 ビュー (過去 30 日間)
Robin L.
Robin L. 2019 年 3 月 20 日
コメント済み: Robin L. 2019 年 3 月 20 日
Hello the community !
% let us consider tab, a 3D-matrix, and second_tab, another one
max = 5;
for a_idx = 1:50
for b_idx = 1:60
for c_idx = 1:10
if (tab(a_idx, b_idx, c_idx) > max)
tab(a_idx, b_idx, c_idx) = Inf;
else
tab(a_idx, b_idx, c_idx) = second_tab(a_idx, b_idx, c_idx) * 5;
end
end
end
end
Do you guys know how I could optimize this processus, using Matlab vectorization, (permute, ones, reshape, .*, ./, an. so on.) ?
I can manage similarly cases but with the "if statement" I am blocked....
Robin

  0 件のコメント

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

採用された回答

Raghunandan V
Raghunandan V 2019 年 3 月 20 日
編集済み: Raghunandan V 2019 年 3 月 20 日
Hi, Here is your answer:
Max = 5;
tab = randi(10,50,60,10);
second_tab = randi(5,50,60,10);
new_tab = second_tab*5;
new_tab(tab>Max)= inf;
I think this is pretty straightforward. Please reply if explanation is required

  3 件のコメント

madhan ravi
madhan ravi 2019 年 3 月 20 日
Nice approach but don’t name a variable max as it will shadow the in-built function max().
Raghunandan V
Raghunandan V 2019 年 3 月 20 日
Yup. I will change it!
Robin L.
Robin L. 2019 年 3 月 20 日
Raghunandan V I thought something like that existed but I didn't manage to get it works. So thank you so much !

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

その他の回答 (0 件)

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by