# Referencing specific dimensions of an array

조회 수: 1(최근 30일)
alexander 30 Dec 2014
Commented: alexander 30 Dec 2014
Hello,
I have a rectangular matrix and I am trying to determine if values in each row are equal. I built a function that will check an array to see if all numbers are equal. I want to avoid using a for loop.
I tried to add a fourth column to an existing matrix with the result of the function.
I tried;
x(:,4)=three(x(:,:))
as well as several other variations. how can I imply to evaluate only each row?

로그인 to comment.

### 채택된 답변

Sean de Wolski 30 Dec 2014
x(:,4) = all(bsxfun(@eq,x(:,1),x(:,2:3)),2)
The fourth column will not be true where the first three columns are equal.
I believe this is what you want. If it's not, exactly what do you want? A small example with inputs->operation->expected output would be ideal

#### 댓글 수: 2

alexander 30 Dec 2014
it took me a little while to see what you did there but I think I understand. I am not just looking for equality though. I am checking if they are all the same value. Below is my funtion
function [ c ] = three( x )
s=find(x==6);
if length(s)==3
c=true;else c=false;
end
end
alexander 30 Dec 2014
So my way works but you's is better. I used
x(:,4) = all(bsxfun(@eq,,x(:,1:3)),2)
Where I can replace the 6 with whatever number I require. I still wonder though from the original question. is their some syntax that would allow what I attempted?

로그인 to comment.