如果我有这样的矩阵:
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方法。
答案 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
。