【问题标题】:select neighbors and find Top n in Matlab [duplicate]选择邻居并在Matlab中找到Top n [重复]
【发布时间】:2013-08-23 15:52:36
【问题描述】:

如果我有这样的矩阵:

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 中做什么? 这是真的吗?我想在选定的邻居中找到前 N 个方法。

【问题讨论】:

  • 我想在行中找到最大值,然后在推荐系统中使用这些最大值。
  • 请明确添加您想要的输出。

标签: matlab


【解决方案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.

希望这能回答你的问题。

【讨论】:

  • 对不起,我更新了它。谢谢你。但是 2 B = sort(sample,2,'descend') 中有什么?如果我有一个 100*100 的矩阵,那是真的吗?
  • 是的。我只是对名为sample 的数组中的行进行排序,并将结果收集到一个名为B 的变量中。然后我通过使用B(:,1:N) 索引列来挑选顶部N 值。例如,如果我想要sample 的第一行中的前十个值,我会执行以下操作:B = sort(sample,2,'descend'); top10row1 = B(1,1:10); 希望这会让您清楚。
  • sort(sample,2,'descend') 中的2 仅表示我们正在沿数组sample 的第二维排序。尝试在命令提示符下键入help sort。 help 函数是你的朋友。
【解决方案2】:

如果这不是您想要的,请尝试 [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 中定义。

【讨论】:

  • @Ferdrick 抱歉,我不明白你的回答。你能解释更多吗?desired_dimension 是什么?谢谢
  • 如果我正确理解您的问题,那么我想不出比@dsgmt 更好的答案了。
  • 非常感谢,是的,我认为这是真的,但是您知道“2”中的 B = sort(sample,2,'descend') 是什么吗?如果我有一个 100*100 的矩阵,那么这段代码使用什么?
  • help sort " Y = sort(X,DIM,MODE) 有两个可选参数。DIM 选择一个维度进行排序。"应该是一样的。
猜你喜欢
  • 2012-10-29
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多