Referencing specific dimensions of an array

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

采纳的回答

Sean de Wolski
Sean de Wolski 2014-12-30
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
alexander 2014-12-30
thanks fo rthe answer
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
alexander 2014-12-30
So my way works but you's is better. I used
x(:,4) = all(bsxfun(@eq,[6],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?

请先登录,再进行评论。

更多回答(0 个)

类别

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

标签

Community Treasure Hunt

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

Start Hunting!

Translated by