Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
Sara Ismail-Sutton
Sara Ismail-Sutton le 25 Nov 2020
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

Réponse acceptée

David Hill
David Hill le 25 Nov 2020
function[out]=neqchek(k)
c=find(k==1)
if ~isempty(c)
k(1)=10
out=k
end
end
  2 commentaires
Sara Ismail-Sutton
Sara Ismail-Sutton le 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 le 25 Nov 2020
Modifié(e) : the cyclist le 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.

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by