【问题标题】:create a matrix without using loop or nested loop operations in MATLAB在 MATLAB 中不使用循环或嵌套循环操作创建矩阵
【发布时间】:2012-09-08 02:32:26
【问题描述】:

我想在不使用任何循环的情况下创建一个矩阵,就像我在 MATLAB 2011a 中制作的以下用于形成矩阵 n(x,y) 的程序一样。

segment1segment2 具有相同的维度(您可以采用任意两个矩阵)。

segment1 = [1 2 3;4 5 6];
segment2 = [5 2 6;9 1 2];

seg1_max = max(max(segment1));
seg2_max = max(max(segment2));

n = zeros(seg1_max, seg2_max);
i = 1; j = 1;

while i<=size(segment1, 1)        
    while j<=size(segment1, 2)    
        x = segment1(i, j);
        y = segment2(i, j);
        n(x,y) = n(x,y)+1;
        j = j+1;    
    end;
i = i+1; j = 1;
end;

我也使用 for loop 制作了这个程序,但我想在不使用循环操作的情况下获取矩阵 n(x,y)。

【问题讨论】:

    标签: matlab loops nested


    【解决方案1】:

    函数accumarray 可以用于此。给定您的segment1segment2,以下计算m,这将与您的n 相同:

    x = segment1(:);
    y = segment2(:);
    m = accumarray([x y], ones(size(x)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多