如何在MATLAB中找到多于一列的多列?

时间:2014-11-13 16:07:00

标签: matlab

我有一个列向量,它是其他多列(在向量中)的平均值。我希望索引矩阵的每个元素都大于平均向量。我能够一次做到这一点:

idx = y1<y2

但如果y2是矩阵,则会出现错误。我目前解决的问题是:

y1 = [y1;y1]

但这是相当不优雅的,并不能解释y2未知大小的问题。 此致

2 个答案:

答案 0 :(得分:7)

我认为你正在寻找这样的东西 -

idx = bsxfun(@lt,y1,y2)

这将创建一个与输入矩阵y2大小相同的逻辑数组1,其中y2中的元素是greater than对应的y10中的元素。

解决此类问题的 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))