# the loop does not display results

4 views (last 30 days)
Lev Mihailov on 27 Jan 2020
Commented: Lev Mihailov on 27 Jan 2020
Hello! There is a matrix and I need to find the first value less than 90
clear all
close all
X=[ 80 90 100 110 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20]' ;
[~,loc]=max(X); % search j
i=1:length(X(:,1)); % search i
j=loc;
while X(i,j)>90
jx(i)=j(i)+1 % find out how many j are running in iteration 1
end
jx is not shown at all, although the condition is true
while X(i,j)<90
jy(i)=j(i)-1
end
first cycle find out the quantity j while condition X> 90 at each iteration
second cycle find out the quantity j while condition X <90 at each iteration
and the problem I do not see jx and jy
##### 2 CommentsShowHide 1 older comment
Lev Mihailov on 27 Jan 2020
I do not understand,
% for the first iteration
while X(i,j)>90 % X(1,4) [110 100 95 90 20]
jx(i)=j(i)+1 % here I do not know what to do
% % jx(1)=j(1)+1 % but I need to do while the whole condition is satisfied
% [110 100 95 90 20] %
% jx(1)=j(1)+1
% jx(1)=j(1)+1 this condition for the first iteration must be met twice
end

Philippe Lebel on 27 Jan 2020
Edited: Philippe Lebel on 27 Jan 2020
You are not looping over the values of "i" nor "j"
i=1:length(X(:,1))
i =
1 2 3 4 5 6 7 8
j =
4 4 4 4 4 4 4 4 4
If you try to evaluate X(i,j), it is equivalent to say that you try to evaluate X([1 2 3 4 5 6 7 8], [4 4 4 4 4 4 4 4 4])
If you want to do what i think you want to do, here is the code:
clear all
close all
X=[ 80 90 100 110 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20
80 90 100 150 100 95 90 20]' ;
[~,loc]=max(X); % search j
j=loc;
for i = 1:length(X(:,1))
for k = 1:length(j)
jx(i)=j(i)+1 % find out how many j are running in iteration 1
if X(i,j(k))>90
break
end
end
if X(i,j(k))>90
break
end
end
this is not optimal but it is easier to understand (i think)
Lev Mihailov on 27 Jan 2020
code goal get jx per column.
And the next question is, can a matlab work with its iterations?