## Operands to the || and && operators must be convertible to logical scalar values.

Thayumanavan

### Thayumanavan (view profile)

님이 질문을 제출함. 10 Apr 2014
최근 활동 sai m

### sai m (view profile)

님이 답변함. 3 Mar 2015
Image Analyst

### Image Analyst (view profile)

님이 답변을 채택함.
%Code x=[1.01 ;2.23; 3.456 ;4.11; 5.897 ;6.234; 7.456; 8.567; 9.110; 10.333];
a=0;
if((x>=5.2)&&(x<=8.50))
disp('Inside if loop');
a=a+1;
end
a
I want the no of values greater than some value and less than some value in a 1D array. If i am going for if statement with sysntax if((x(:,1)>=5.2)&&(t(:,1)<=8.50)) i am getting Operands to the and && operators must be convertible to logical scalar values error.
If i use if((x(:,1)>=5.2)&(t(:,1)<=8.50)) flow is not going inside the loop and i am not able to get the count as 3 .

Image Analyst

### Image Analyst (view profile)

10 Apr 2014
You don't have a loop at all! There is no "for" and an "if" block is not a loop.

로그인 to comment.

## 답변 수: 4

Image Analyst

### Image Analyst (view profile)

님의 답변 10 Apr 2014
채택된 답변

Try this:
x=[1.01 ;2.23; 3.456 ;4.11; 5.897 ;6.234; 7.456; 8.567; 9.110; 10.333];
for k = 1 : length(x)
if x(k) >= 5.2 && x(k) <=8.50
fprintf('x(%d) = %f and is in range so we are inside if block.\n', k, x(k));
end
end
In command window:
x(5) = 5.897000 and is in range so we are inside if block.
x(6) = 6.234000 and is in range so we are inside if block.
x(7) = 7.456000 and is in range so we are inside if block.

로그인 to comment.

Marta Salas

### Marta Salas (view profile)

님의 답변 10 Apr 2014
Marta Salas

### Marta Salas (view profile)

님이 편집함. 10 Apr 2014

find returns the indexes of the values that holds the condition 5.2=< x >=8.50
index = find(x>=5.2 & x<=8.50)
To know the number of values, you can check the size of index
length(index)

Thayumanavan

### Thayumanavan (view profile)

10 Apr 2014
Thanks,As per find command I got the count as 3. I also tried for loop as follows:
x=[1.01 ;2.23; 3.456 ;4.11; 5.897 ;6.234; 7.456; 8.567; 9.110; 10.333];
a=0;
arraysize=length(x);
for i=1:arraysize
if ((x(i,1)>=5.2)&&(x(i,1)<=8.50))
a=a+1;
else
disp('not going inside loop');
end
end
disp('the count is');
a
.once again Thanks .
Marta Salas

### Marta Salas (view profile)

10 Apr 2014
That code works for me.
I would suggest you to use fprintf instead of disp to print comments with variables
fprintf('the count is %d \n',a);

로그인 to comment.

Horia

### Horia (view profile)

님의 답변 18 May 2014

Try: if condition 1 do something else if condition 2 do the samething; else do something else break; end; end;

로그인 to comment.

sai m

### sai m (view profile)

님의 답변 3 Mar 2015

if(get(handles.radiobutton1,'Value') == 0 && get(handles.radiobutton2,'Value') == 0 && get(handles.radiobutton5,'Value') == 0 && get(handles.radiobutton6,'Value' == 0 && get(handles.radiobutton7,'Value') == 0 && get(handles.radiobutton8,'Value') == 0 && get(handles.radiobutton9,'Value') == 0 && get(handles.radiobutton10,'Value') == 0)) errordlg('No option selected','File Error'); %user did not select any radio button, then do this guidata(hObject, handles); end;
error ??? Operands to the and && operators must be convertible to logical scalar values.

로그인 to comment.

Translated by