我有一个列向量,它是其他多列(在向量中)的平均值。我希望索引矩阵的每个元素都大于平均向量。我能够一次做到这一点:
idx = y1<y2
但如果y2
是矩阵,则会出现错误。我目前解决的问题是:
y1 = [y1;y1]
但这是相当不优雅的,并不能解释y2
未知大小的问题。
此致
答案 0 :(得分:7)
我认为你正在寻找这样的东西 -
idx = bsxfun(@lt,y1,y2)
这将创建一个与输入矩阵y2
大小相同的逻辑数组1
,其中y2
中的元素是greater than
对应的y1
和0
中的元素。
解决此类问题的 bsxfun
最好的事情是它需要处理 expansion
。那么,你所拥有的是一个通用的解决方案,甚至不需要查询sizes
。
答案 1 :(得分:2)
尝试使用函数repmat
。
repmat(A,n1,n2)
对A. {/ p>进行n1
x n2
平铺
因此,如果你想制作一个包含n个相同列的向量,每个包含y1
,你可以运行:
repmat(y1,1,n)
您想要的列数是y2中的列数,即
size(y2,2)
因此,您正在寻找的解决方案是:
idx=y2>repmat(y1,1,size(y2,2))