选择邻居并在Matlab中找到Top n

时间:2013-08-23 15:52:36

标签: matlab

如果我有这样的矩阵:

sample = [1              0.21852382     0.090085552    0.219984954 0.446286385;
          0.21852382     1              0.104580323    0.138429617 0.169216538;
          0.090085552    0.104580323    1              0.237582739 0.105637177;
          0.219984954    0.138429617    0.237582739    1           0.192753169;
          0.446286385    0.169216538    0.105637177    0.192753169 1           ]

我想在Matlab的每一行中找到前3个最大值。 我在Matlab做什么? 这是真的吗?我想在选择的邻居中找到top-N方法。

2 个答案:

答案 0 :(得分:1)

我建议重写你的问题。您说您想要每行中的前十个最大值,但您给出的矩阵只有五列:/

认为你正在寻找的东西是这样的。

sample = [1              0.21852382     0.090085552    0.219984954 0.446286385;
          0.21852382     1              0.104580323    0.138429617 0.169216538;
          0.090085552    0.104580323    1              0.237582739 0.105637177;
          0.219984954    0.138429617    0.237582739    1           0.192753169;
          0.446286385    0.169216538    0.105637177    0.192753169 1           ]
B = sort(sample,2,'descend') % will sort the rows of the array in descending order   
C = B(:,1:N)                 % Select the top N values.

希望这能回答你的问题。

答案 1 :(得分:0)

如果那不是您想要的,请尝试[Y,I] = max(matrix,[],desired_dimension)其中Y和数组是实际最大值(例如[1 1 1 1 1]),I是最大值的索引, (例如[1 2 3 4 5])

修改 如果desired_output = [1 1 1 1 1]',(列向量,注释转置),那么执行该操作的命令是max(matrix,[],2)以沿第二维操作。此行为在help max

中定义