【问题标题】:i want a function to calculate the complete matrix for binary matrix?我想要一个函数来计算二进制矩阵的完整矩阵?
【发布时间】:2016-05-06 09:48:29
【问题描述】:

如果我有这样的(行,列)矩阵 M

   M = [ 1 1 0 1 0 1
         0 1 1 0 1 0
         1 0 1 0 1 0
         0 1 0 1 0 1 
         1 1 0 1 1 1 ]

然后我找到了这两个矩阵 M_row 和 M_col

  M_row = [ 2 1 1 
            2 1 0
            1 1 1
            1 1 1
            2 3 0 ] 

which M_row 显示 M 中每一行的每组中有多少个

在那之后我资助 sum_row 和 count_row 就像那个

sum_row 显示 M_row 中元素的总和

  sum_row = [ 4
              3
              3
              3
              5 ]

count_row 显示 M_row 中非零元素的数量

  count_row = [ 3
                2
                3
                3
                2 ]

例如,M_row 中的最后一行是 [1 3 0],表示存在 [1 0 0 1 1 1]

我想要一个函数来

  • 首先生成一个(行、列)零矩阵X
  •  for k=1:n 
        if sum_row(k) +  count_row(k) - 1 == columns then 
    go back to M_row and convert this row element to group ones 
    

例如 k=1 , 4+3-1 = 6 使条件为真,然后烘焙到 M_row 并将 [ 2 1 1] 转换为 [ 1 1 0 1 0 1]

最终的答案是

      X = [ 1 1 0 1 0 1
            0 0 0 0 0 0
            0 0 0 0 0 0
            0 0 0 0 0 0
            1 1 0 1 1 1 ]

【问题讨论】:

  • M 是输入吗?所以你只是想过滤M?还是你只知道M_row?从第 3 行和第 4 行可以看出,无法从 M_row 重构 M
  • M_row 和 sum_row 和 count_row 我可以找到然后,我只想从 M_row 中找到 X 而不使用 M
  • columns 是什么?总是6
  • @user6296647 您一直在询问有关该主题的问题,但是当我在另一个问题中写评论时,您没有回复。你只希望我们给你一个最终的解决方案,而不需要你自己付出任何努力,对吧? :(
  • "我想要一个函数来..." 不仅没有显示解决您自己的问题的努力,整个帖子中也没有实际的问题。这只不过是一个“给我代码”的需求。

标签: matlab function matrix


【解决方案1】:

好的,我会快速拍摄:

X = zeros(size(M));
numCols = size(M, 2);
for k=1:length(count_row)
    if sum_row(k)+count_row(k)-1 == numCols
       X(k,:) = M(k,:);
    end
end

IMO,不需要从M转换回X,只要满足条件就将M的整行转换成X。

为了您的理解,我省略了矢量化代码(更好、更短、更快)(即 for 循环更容易理解)。如果您想加快速度,请考虑自己实现矢量化索引,而不是使用 for 循环。


我从评论中读到的是:你没有M,你只有M_row。好的,那么请先使用您其他问题的解决方案:how to generate a random binary matrix with a specific condition in matlab?M_row 生成M_restored,然后使用我的代码从M_restored 生成X

【讨论】:

  • 我可以通过该方法找到它,但我想使用没有 M 的 M_row
  • 所以您的意思是,无论出于何种原因,您知道M_rowM_col,但您不知道M 本身-> 因此您想从M_row 生成X 而不是来自M?
  • 如果是这样,为什么不使用这个算法从 M_row 生成 X? stackoverflow.com/questions/37055681/… 稍作调整应该可以工作...请努力。
  • @user6296647:你有没有投票过或者给答案/cmets 加分?如果没有,用不了多久就没有人帮忙了。
猜你喜欢
  • 2018-01-21
  • 2019-09-08
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多