How can I check whether the strictly positive elements of each row of a matrix are equal?
    조회 수: 7 (최근 30일)
  
       이전 댓글 표시
    
How can I check whether the strictly positive elements of each row of a matrix are equal? E.g. if
A=[0 1 1 2; 0 1 0 1; 3 0 3 0]
I want
B=[0;1;1]
댓글 수: 3
  Geoff Hayes
      
      
 2014년 4월 29일
				Cris - is this a homework question? Please review http://www.mathworks.com/matlabcentral/answers/8626-how-do-i-get-help-on-homework-questions-on-matlab-answers.
채택된 답변
  per isakson
      
      
 2014년 4월 29일
        
      편집: per isakson
      
      
 2014년 4월 29일
  
          arrayfun( @(jj) (length(unique(A(jj,(A(jj,:)>0)))) == 1),(1:size(A,1)) )
returns
    ans =
         0     1     1
댓글 수: 0
추가 답변 (2개)
  Sara
      
 2014년 4월 29일
        B = zeros(size(A,1),1);
for i = 1:size(A,1)
   temp = A(i,:);
   temp = temp(temp>0);
   temp = unique(temp);
   if(length(temp) == 1)
      B(i) = 1;
   end
end
댓글 수: 0
  dpb
      
      
 2014년 4월 29일
        The "deadahead" solution...
isPos=false(size(A,1),1);
for i=1:size(A,1)
  isPos(i)=all(diff(A(i,A(i,:)>0))==0);
end
Vectorize at your leisure... :)
댓글 수: 2
  dpb
      
      
 2014년 4월 29일
				Yes, w/ arrayfun. That was left as "exercise for the student" :)
As illustrated by Per; same idea with anonymous function. As also showed, any of a number of ways to check on the consistency of the values in a row is doable.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!