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

1 次查看(过去 30 天)
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

采纳的回答

David Hill
David Hill 2020-11-25
function[out]=neqchek(k)
c=find(k==1)
if ~isempty(c)
k(1)=10
out=k
end
end
  2 个评论
Sara Ismail-Sutton
Sara Ismail-Sutton 2020-11-25
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 2020-11-25
编辑:the cyclist 2020-11-25
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.

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by