如有矩阵a=[2 3;3 3;5 6;7 8],现在需要寻找在矩阵a中和矩阵b=[3 3]相同的行编号,或者寻找在矩阵a中是否有一行和矩阵b相等,请问各位大侠应该如何解决?使用for循环的方法小弟知道如何做,就是想问问大家有没有什么matlab中自带的函数可以解决这个问题?
解答:- a=[2 3;3 3;5 6;7 8]
- b=[3 3];
- c=find(all(bsxfun(@eq,a,b),2))
- c =
- 2
bsxfun函数的使用
语法:C = bsxfun(fun,A,B)
对数A和B进行二元操作,其中fun是函数句柄,可以是 M-file 函数,也可以是如下built-in 函数:
- @plus Plus
- @minus Minus
- @times Array multiply
- @rdivide Right array divide
- @ldivide Left array divide
- @power Array power
- @max Binary maximum
- @min Binary minimum
- @rem Remainder after division
- @mod Modulus after division
- @atan2 Four quadrant inverse tangent
- @hypot Square root of sum of squares
- @eq Equal
- @ne Not equal
- @lt Less than
- @le Less than or equal to
- @gt Greater than
- @ge Greater than or equal to
- @and Element-wise logical AND
- @or Element-wise logical OR
- @xor Logical exclusive OR
- 如果使用了M-file 函数, 输入必须是同样大小的两个列向量, 或者一个是列向量,一个是标量;
- 输出数组C的大小为:
- max(size(A),size(B)).*(size(A)>0 & size(B)>0).
|