Why the loop still run after get to the of the array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Shiyun Li
am 11 Apr. 2020
Kommentiert: Shiyun Li
am 11 Apr. 2020
I am trying to diaplay a true table with 1 stand for true, 0 stand for false and 2 for maybe.
two array when x is o, or y is 0, display 0 directly and return; if x=1 and y=1 display 1(true); if x=1 and y=2 display 2(maybe); if x=2 and y=1 then display 2(maybe)
here is my code, I know that might be the best way to do it so if you had a better way please advise.
For now I don't know why the loop still keep going after it reach to the end of the array. Please let me know if you know what is wrong. Thank you in advance.
clc;clear;
%create arrays
x=[1 1 1 0 0 0 2 2 2];
y=[1 0 2 1 0 2 1 0 1];
for i=1:length(x)
for r=1:length(y)
if x(i)==0
disp('0');
elseif x(i)==y(i)==1
disp('1');
elseif x(i)==1 && y(i)==2
disp('2');
elseif x(i)==2 && y(i)~=0
disp('2');
else
disp('0');
end
i=i+1;
end
end
%Here is what in the command window; but i only expect 9 digits
1
0
2
0
0
0
2
0
2
0
2
0
0
0
2
0
2
Index exceeds the number of array elements (9).
Error in test_q22 (line 13)
if x(i)==0
0 Kommentare
Akzeptierte Antwort
Mehmed Saad
am 11 Apr. 2020
With Your Code (For Loops)
clc;clear;
%create arrays
x=[1 1 1 0 0 0 2 2 2];
y=[1 0 2 1 0 2 1 0 1];
for i=1:length(x)
%Not required
% for r=1:length(y)
if x(i)==0
disp('0');
elseif x(i)==y(i)==1
disp('1');
elseif x(i)==1 && y(i)==2
disp('2');
elseif x(i)==2 && y(i)~=0
disp('2');
else
disp('0');
end
% Not required
% i=i+1;
% end
end
Short Method (array)
tr_t =1*((x==1)&(y==1))+2*((x+y)>2);
disp(num2str(tr_t'));
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!