【问题标题】:How to distinguish the two picture matrices?如何区分这两个图片矩阵?
【发布时间】:2015-08-16 16:36:56
【问题描述】:

我有一个图片矩阵A,其大小为200*3000 double。我还有另一个图片矩阵B,其大小为200*1000 double。矩阵B1000 列正好来自矩阵A 的列。我的问题是:

如何得到一个与矩阵A大小相同的矩阵C,但只保留矩阵B中列的原始值?我的意思是矩阵C 的大小是200*3000 double,但只有1000 列与矩阵B 具有相同的值。其他2000列会被设置成另一个值d,这是我的第二个问题,我应该为d设置什么值,这样图片矩阵C就可以和图片矩阵A区分开来?

【问题讨论】:

    标签: matlab data-analysis matlab-deployment


    【解决方案1】:

    ismember'rows' 选项一起使用。这是一个例子:

    A = [1 2 3 4; 5 6 7 8]; %// example A
    B = [3 10 1; 7 20 5];   %// example B
    val = NaN;              %// example value to indicate no match
    
    C = A; %// initiallize
    ind = ismember(A.',B.','rows'); %// matching columns
    C(:,~ind) = val; %// set non-matching columns to val
    

    等效地,您可以将ismember 替换为bsxfun,这样该行就变成了

    ind = any(all(bsxfun(@eq, A, permute(B, [1 3 2])), 1), 3);
    

    在这个例子中,

    A =
         1     2     3     4
         5     6     7     8
    B =
         3    10     1
         7    20     5
    C =
         1   NaN     3   NaN
         5   NaN     7   NaN
    

    【讨论】:

    • 我猜你是对的,但它非常消耗内存。由于内存问题,它无法在我这边工作。有没有其他方法可以避免内存问题。
    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 2013-01-25
    • 2012-07-16
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    相关资源
    最近更新 更多