【问题标题】:Matlab replacing specific values with condition in matrixMatlab用矩阵中的条件替换特定值
【发布时间】:2018-03-31 18:41:15
【问题描述】:

我对矩阵有误。我不明白为什么它不起作用。代码如下:

A = zeros(3,3,3);
A(:,:,1) = [1 2 3; 4 5 6; 7 8 9];
A(:,:,2) = [1 2 3; 1 2 3; 1 2 3];
A(:,:,3) = [1 2 3; 4 5 6; 7 8 9];

我只想替换尊重二维条件的值,使用这个:

A(A(:,:,2)==1)=0

但它取代了第一维! :

0     2     3
0     5     6
0     8     9

有没有人可以向我解释为什么这不起作用?

【问题讨论】:

  • 你应该看看A(:,:,2)==1
  • @OliverCharlesworth 是的,我知道,但我怎样才能只选择第二维来替换值?
  • A(:,:,2)==1 输出一个 3×3 二维数组,但您需要 3 维数组为 A(cat(3,false(3,3,1),A(:,:,2),false(3,3,1))==1)=0

标签: matlab matrix


【解决方案1】:

这条线的问题是您在 A 上应用了一个 2D 蒙版 (A(:,:,2)==1),它有 3 个维度。

相反,您可以使用以下方法:

temp = A(:,:,2);
temp(temp==1)=0;
A(:,:,2) = temp;

【讨论】:

  • 谢谢@drorco。我同时找到了另一个解决方案:temp(:,:,2) = A(:,:,2)==1; A(temp)=0;
  • @KiMaN 很高兴为您提供帮助。你检查过你的其他解决方案吗?它似乎与您在问题中遇到的问题相同
  • 是的,我用同一个例子检查了它,它有效,不适合你?
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 2014-11-29
  • 2022-01-24
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
相关资源
最近更新 更多