I mean how to find specific row in the matrix (for example 'find' [3 8 NaN] must return me [0;0;0;0;1];).
Find row with NaN in it.
    27 次查看(过去 30 天)
  
       显示 更早的评论
    
I have variable X.
 X=[2   4   6;
    4   5   NaN
    3   NaN NaN
    5   8   12
    3   8   NaN];
How to find any row with NaN in it. ismember([3 8 NaN],X,'rows') gives me 0.
采纳的回答
  per isakson
      
      
 2014-8-17
        
      编辑:per isakson
      
      
 2014-8-17
  
      A start:
    is(:,1) = X(:,1)==3;
    is(:,2) = X(:,2)==8;
    is(:,3) = isnan( X(:,3));
    all( is, 2 )
which returns
    ans =
         0
         0
         0
         0
         1
AFAIK: isnan is the only way to spot NaN.
I don't think there is a magic one-liner. A little function along the example above is one way. Loop over all columns, ....
0 个评论
更多回答(3 个)
  Roger Stafford
      
      
 2014-8-17
        
      编辑:Roger Stafford
      
      
 2014-8-17
  
      The code
   t = any(isnan(X),2);
will return you a column vector of logicals in which each element is true if the corresponding row of X contains a NaN. I trust that would meet your needs. In your example you would get t = [false;true;true;false;true].
0 个评论
  Andrei Bobrov
      
      
 2014-8-17
        
      编辑:Andrei Bobrov
      
      
 2014-8-17
  
         X=[2   4   6;
      4   5   NaN
      3   NaN NaN
      5   8   12
      3   8   NaN];
  с = [3 8 NaN];
z = [X;c];
z(isnan(z)) = max(z(:)) + 1;
out = ismember(z(1:end-1,:),z(end,:),'rows');
other example
X = randi(100,200,15);
X([5,125],[2,10]) = nan; % your array
c = X(5,:);
z = [X;c];
z(isnan(z)) = max(z(:)) + 1;
out = ismember(z(1:end-1,:),z(end,:),'rows');
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Elementary Polygons 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!