if statement find criteria not doing what I want it to do

2 views (last 30 days)
if k does not contain 1 matlab returns ' 1×0 empty double row vector ' so i dont understand why this is not working in my if statement, where I have wrote ' 1×0 empty double row vector' as 'zeros(1,0)'
if k does contain 1 it returns scalar 1
function[out]=neqchek(k)
c=find(k==1)
if c~=zeros(1,0)
k(1)=10
out=k
end
end

Accepted Answer

David Hill
David Hill on 25 Nov 2020
function[out]=neqchek(k)
c=find(k==1)
if ~isempty(c)
k(1)=10
out=k
end
end
  2 Comments
Sara Ismail-Sutton
Sara Ismail-Sutton on 25 Nov 2020
okay many thanks, and would you be able to point our for me what is wrong with using zeros(0,1) ? :))
the cyclist
the cyclist on 25 Nov 2020
Edited: the cyclist on 25 Nov 2020
The reason your code doesn't work is that checking "equality" between two empty arrays does not return a simple true value. This is why your if statement doesn't behave as you expect.
Try something as simple as
[] == []
to see what I mean.

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 25 Nov 2020
neqchek = @(k) subsasgn(k, substruct('()', {k(1) == 1}), 10);
out = neqchek([1 : 2, 1])
out = 1×3
10 2 1

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!