【问题标题】:How to extract a part of a matrix with condition in Matlab如何在Matlab中提取具有条件的矩阵的一部分
【发布时间】:2012-10-08 12:26:59
【问题描述】:

我有一组矩阵,我只想提取满足条件的矩阵的一部分。

例如:150x180 矩阵的值从02.80,我只想要1.661.77 之间的值 我想将范围内的值保留在原始矩阵中的原始位置,并将另一个设置为零。

谁能帮帮我。

谢谢

【问题讨论】:

标签: matlab matrix extract


【解决方案1】:

您可以使用逻辑索引。首先,找到不满足您条件的A 条目。接下来,使用A(idx) 将它们更改为 0:

% example matrix
A = 2.8*rand(150, 180);

% find entries meeting some criterion
idx = A<1.66 | A>1.77;
A(idx) = 0;

或者更简单,正如 Rody Oldenhuis 建议的那样,您可以将逻辑表达式直接包含在矩阵引用中:

A(A<1.66 | A>1.77) = 0;

这会产生更短更简洁的代码,但不是更快的代码:MATLAB 仍显式创建逻辑索引变量,但随后将其清除。

【讨论】:

  • @AliOsaca 由于您是新用户,我建议您检查所有问题并检查解决您问题的答案处的“接受”标志。这就是 SO 问题和答案的功能。这将激励其他人在未来帮助您。
  • 或者跳过临时的并做A(A&lt;1.66|A&gt;1.77) = 0
  • @RodyOldenhuis 我希望这种方法可以跳过临时变量。然而,实际上 Matlab 仍然会创建一个逻辑索引变量......不幸的是。
  • @angainor:你说得对,我的意思是跳过变量idx中索引的显式存储,所以你可以跳过clear idx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2017-02-10
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多