If condition for all elements of array

3 ビュー (過去 30 日間)
Beeraiah Thonti
Beeraiah Thonti 2021 年 10 月 31 日
コメント済み: Beeraiah Thonti 2021 年 10 月 31 日
for i=1:n-2
for j=i+2:n
k_arr=i+1:j-1
for counter = 1:length(k_arr)
k = k_arr(counter);
if all(w(k)<(w(i)+((w(j)-w(i))*(t(k)-t(i))/(t(j)-t(i)))))
A(i,j)=1;
A(j,i)=1;
else A(i,j)=0;
A(j,i)=0;
end
disp('cycle completed');
end
end
In output I am expecting 1 only when if condition is true for all elements from k_arr(array) but it is giving output 1 even single element of array satisfy the condition. Please help me

採用された回答

Walter Roberson
Walter Roberson 2021 年 10 月 31 日
if all(w(k)<(w(i)+((w(j)-w(i))*(t(k)-t(i))/(t(j)-t(i)))))
You are indexing all variables there, and each time you are indexing with a scalar. Because of this, the part inside the all() is always a scalar result, so the all() is not doing anything useful for you there.
Now, if you were to do
for i=1:n-2
for j=i+2:n
k_arr=i+1:j-1
k = k_arr;
if all(w(k) < (w(i)+((w(j)-w(i))*(t(k)-t(i))/(t(j)-t(i)))))
A(i,j)=1;
A(j,i)=1;
else
A(i,j)=0;
A(j,i)=0;
end
end
end
  3 件のコメント
Walter Roberson
Walter Roberson 2021 年 10 月 31 日
I predict that your w and your t do not have the same orientation.
for i=1:n-2
for j=i+2:n
k_arr=i+1:j-1
k = k_arr;
if all(reshape(w(k),[],1) < (w(i)+((w(j)-w(i))*(reshape(t(k),[],1)-t(i))/(t(j)-t(i)))))
A(i,j)=1;
A(j,i)=1;
else
A(i,j)=0;
A(j,i)=0;
end
end
end
Beeraiah Thonti
Beeraiah Thonti 2021 年 10 月 31 日
Brilliant how couldd I miss a basic thing Thank you

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSet Operations についてさらに検索

製品


リリース

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by