If condition for all elements of array
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Beeraiah Thonti
le 31 Oct 2021
Commenté : Beeraiah Thonti
le 31 Oct 2021
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
0 commentaires
Réponse acceptée
Walter Roberson
le 31 Oct 2021
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 commentaires
Walter Roberson
le 31 Oct 2021
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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Set Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!