Vectorization of For-If combination

2 ビュー (過去 30 日間)
MAB2020
MAB2020 2020 年 7 月 25 日
コメント済み: MAB2020 2020 年 7 月 27 日
Requesting guidance on the proper vectorization methods for combinations of if statements within for loops. An example of the format referenced is included below. Code is utilizing a painful combination of if statements nested within for loops and appropriate vectorization is the only way in which this will run efficiency
X = zeros(1000,1)
C = 1:10
for A = 1:10
for B = 1:10
if C = 1
X(A*B*C) = 1;
elseif C = 2
X(A*B*C) = 2;
else
X(A*B*C) = 3;
end
end
end
  2 件のコメント
David Hill
David Hill 2020 年 7 月 25 日
Your code does not make sense. C is an array that does not change, your code will only execute the else statement.
X = zeros(1000,1)
C = 1:10
for A = 1:10
for B = 1:10
if C == 1%need == for comparison, this is always false
X(A*B*C) = 1;
elseif C == 2%comparison C= [1 2 3 4 5 6 7 8 9 10], this will be false
X(A*B*C) = 2;
else
X(A*B*C) = 3;%this will execute but X(1:10)=3 for for loop
end
end
end
MAB2020
MAB2020 2020 年 7 月 25 日
% Correction, use the following code. Trying to generalize a much more complex segment.
% The overall objective is to gain a proper understanding of vectorization algorithms for
% matrix operations consisting of if statements nested within for loops
for A = 1:10
for B = 1:10
for C = 1:10
if C == 1
X(A*B*C) = 1;
elseif C == 2
X(A*B*C) = 2;
else
X(A*B*C) = 3;
end
end
end
end

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

採用された回答

David Hill
David Hill 2020 年 7 月 25 日
Can't think of any better way to do your problem. Only 1 loop now.
x=zeros(1000,1);
for i=1:10
x(i:i:10*i)=1;
x(2*i:2*i:20*i)=2;
x(3*i:3*i:30*i)=3;
x(4*i:4*i:40*i)=3;
x(5*i:5*i:50*i)=3;
x(6*i:6*i:60*i)=3;
x(7*i:7*i:70*i)=3;
x(8*i:8*i:80*i)=3;
x(9*i:9*i:90*i)=3;
x(10*i:10*i:100*i)=3;
end
  1 件のコメント
MAB2020
MAB2020 2020 年 7 月 27 日
Excellent, thank you very much for your input! I will implement this into my code and evaluate for relative performance improvement

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

その他の回答 (0 件)

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by