【问题标题】:How to apply a function on every pair of rows of a Matrix in Matlab?如何在 Matlab 中矩阵的每一对行上应用函数?
【发布时间】:2018-07-29 10:00:34
【问题描述】:

我是 matlab 新手并使用矩阵,我有点困惑。

我应该创建一个名为Mm x n 矩阵,它的元素是-110

我需要编写一个名为d(x,y) 的函数,如果x = -1y = 1 则返回1。否则返回0

还有一个计算每列中 d(m(i,j),m(k,j)) 和的函数:

请阅读评论以获取示例。

如何求和?

我知道基本的编程,但我不知道如何做到这一点。

【问题讨论】:

  • 检查 this,其中 A 是您的矩阵
  • 假设 M = [-1 0 -1; 1 -1 -1; 0 1 1]。如果我计算第一行和第二行的总和,它是从 1 到 3 的 j 的 d(m(1,j),m(2,j) 的总和,即 d(m11,m21) + d(m12,m22 ) + d(m13,m23) = d(-1,1) + d(0,-1) + d(-1,-1) = 1+ 0 + 0 =1。我不确定它是否相同虽然作为汉明距离。然后我想为每一对行编写这个总和的代码,并在矩阵中得到答案,但我不知道如何。
  • 为什么d(0,-1) 0?
  • @UnbearableLightness 因为 d(x,y) 仅在 (x=-1 & y=1) 时返回 1。我还稍微编辑了我的问题。
  • 好吧,你试过@OmG的回答吗?

标签: matlab function matrix


【解决方案1】:

您可以使用nchoosek 进行选择:

comb = nchoosek(1:size(m,1), 2);
result = zeros(1, length(comb)); % allocate the memory
% you can run some techniques to run a function on each row of comb
% which is mentinoned in other posts instead of the following code
for i = 1:length(comb)
    result(i) = sum(abs(m(comb(i,1), :) - m(comb(i,2), :)) == 2);
end

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 2013-02-23
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多