【问题标题】:Changing those elements of a matrix to zero which are not in a column of another matrix将矩阵中不在另一个矩阵列中的元素更改为零
【发布时间】:2017-02-09 22:08:06
【问题描述】:

我有一个100x100矩阵A(包含从0到150的值)和一个35x4矩阵B。在矩阵A 中,我只想保留B 的第3 列中存在的那些值,即B(:,3),并将A 中的所有其他值更改为零。所以A 的大小将保持不变。这是可以实现的吗?

我开始编写一个代码,以遍历矩阵 A 的循环开始,另一个遍历 B 的第 3 列和 if 语句来表示我想要的相等条件,但如何正确定义循环的终结性?

for i=1:size(A,1)
    for j=1:size(B,3)
        if ismember (A(i,i),B(j,3))
            A(B(j,3))=A; % it's false
        end
    end
end

【问题讨论】:

  • 您只想保留那些与B 的第3 列相对应的A 值。美好的。但是保持A 的大小不变 是什么意思?如果你想保留一些值,那么大小显然会改变
  • 是的,我希望我的矩阵 A 保持为矩阵 [100x100]。另一种看待事物的方式是,与 B 的第 3 列中的值不同的 A 的值将被归零。这可以实现吗?
  • 如果您有兴趣,我可以提出一个非循环的解决方案
  • 是的,为什么不有趣:-)

标签: matlab matrix


【解决方案1】:

这可以不用循环使用ismember 来完成,如下所示:

 A=A.*ismember(A,B(:,3))

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多