Logical operators not working inside while loop

1 view (last 30 days)
I have wrote conditions inside while loop using logical operators.
my program is
p=12;
while (p~=1) | (p~=2)
imshow(image.jpg);
end
but an infinite loop is running
I am unable to find the bug in this. Please help.

Accepted Answer

Sean de Wolski
Sean de Wolski on 29 Jan 2013
Well you never change p so it is always 12!
x = 10;
while x~=1
x = x-1;
disp(x)
end
Alternatively you can use a for-loop:
for ii = 10:-1:1
disp(ii);
end

More Answers (2)

Jan
Jan on 29 Jan 2013
Yes, of course this is in infinite loop: The value of p does not change inside the loop.

Niladri
Niladri on 31 Jan 2013
Thank you Sean de Wolski & Jan Simon.
Now I have wrote a program which is actually required for my project.
I am taking an analog output (as trigger) from DAC. My codes will start working only when matlab receives trigger from DAC.
Codes are:
p=0;
while (p~=128|p~=192) %2 types of output released by DAC%
p=fread(s,1);
if (p==128)
imshow('x.jpg'); pause(1); imshow('z.jpg'); pause(2);
elseif (p==192
imshow('y.jpg'); pause(1); imshow('z.jpg'); pause(2);
end
end
According to the logic used in the previous program this also should run infinite times and that I need. But it is terminating after some time automatically. Please help.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!