如何在MATLAB中找到大于单个列的多个列?

如何在MATLAB中找到大于单个列的多个列?,matlab,Matlab,我有一个单列向量,它是向量中其他多个列的平均值。我希望在矩阵的每个元素大于平均向量时进行索引。我可以通过以下方式一次完成此操作: idx = y1<y2 但这是相当不雅观的,并不能解释尺寸未知的y2。 问候我想你在找这样的东西- idx = bsxfun(@lt,y1,y2) 这将创建一个与输入矩阵y2大小相同的逻辑数组,其中y2中的元素大于y1中的相应元素,否则为0 解决这样一个问题最好的办法是,它能解决所需的扩展。因此,您将拥有一个通用的解决方案,甚至不需要查询尺寸。我想您正在寻找

我有一个单列向量,它是向量中其他多个列的平均值。我希望在矩阵的每个元素大于平均向量时进行索引。我可以通过以下方式一次完成此操作:

idx = y1<y2
但这是相当不雅观的,并不能解释尺寸未知的y2。
问候

我想你在找这样的东西-

idx = bsxfun(@lt,y1,y2)
这将创建一个与输入矩阵y2大小相同的逻辑数组,其中y2中的元素大于y1中的相应元素,否则为0


解决这样一个问题最好的办法是,它能解决所需的扩展。因此,您将拥有一个通用的解决方案,甚至不需要查询尺寸。

我想您正在寻找类似的解决方案-

idx = bsxfun(@lt,y1,y2)
这将创建一个与输入矩阵y2大小相同的逻辑数组,其中y2中的元素大于y1中的相应元素,否则为0

解决这样一个问题最好的办法是,它能解决所需的扩展。因此,您将拥有一个通用的解决方案,甚至不需要查询大小。

尝试使用函数repmat

repmatA,n1,n2将A进行n1 x n2平铺

因此,如果要生成一个包含n个相同列(每个列包含y1)的向量,可以运行:

repmaty1,1,n

所需的列数是y2中的列数,即

尺寸2,2

因此,您正在寻找的解决方案是:

idx=y2>repmat(y1,1,size(y2,2))
尝试使用函数repmat

repmatA,n1,n2将A进行n1 x n2平铺

因此,如果要生成一个包含n个相同列(每个列包含y1)的向量,可以运行:

repmaty1,1,n

所需的列数是y2中的列数,即

尺寸2,2

因此,您正在寻找的解决方案是:

idx=y2>repmat(y1,1,size(y2,2))

@我每天都告诉自己!Divakar总是使用bsxfun lol解决问题。就像chappjc使用accumarray解决所有问题一样。TBH,我只是通过Divakar学会了bsxfun。这就是为什么我如此了解它。顺便说一句+1@rayryeng嗯…只要有可能是的,我想我们都有自己喜欢的工具。很高兴看到您这些天来非常高效地使用bsxfun和accumarray!当然啦!!:@LuisMendo@Kamtal我每天都这样告诉自己!Divakar总是使用bsxfun lol解决问题。就像chappjc使用accumarray解决所有问题一样。TBH,我只是通过Divakar学会了bsxfun。这就是为什么我如此了解它。顺便说一句+1@rayryeng嗯…只要有可能是的,我想我们都有自己喜欢的工具。很高兴看到您这些天来非常高效地使用bsxfun和accumarray!当然啦!!:@LuisMendoYou应该考虑解释你的回答,谢谢你帮助我记住雷帕特。我也需要它!你应该考虑解释你的回答,谢谢你帮助我记住瑞帕特。我也需要它!