MATLAB访问条件值并在单列中执行操作

时间:2014-06-26 17:57:26

标签: matlab

2天前刚开始使用MATLAB,我无法弄清楚一个非循环方法(因为我读它们很慢/效率低,MATLAB有更好的选择)来执行一个简单的任务。 我有一个5列和270行的矩阵。我想做的是:

如果矩阵goodM的第5列中元素的值低于90,我想取该元素并从90减去它。

到目前为止,我尝试过: test = goodM(:,5)< = 90;

goodM(test)= 999;

它将第1列中的所有goodM值而不是5更改为999,此外,此方法不允许我对第5列中90以下的元素执行操作。任何优雅的解决方案都可以执行此操作?

edit :: goodM(:,5)(test)= 999;似乎没有工作,所以我不知道指定目标列。

2 个答案:

答案 0 :(得分:2)

我假设您希望在问题中的文字读取时操作值低于90的元素,而不是代码中使用的'below or equal to'表示的'<='。试试这个 -

ind = find(goodM(:,5) < 90) %// Find indices in column 5 that have values less than 90
goodM(ind,5) = 90 - goodM(ind,5) %// Operate on those elements using indices obtained from previous step

答案 1 :(得分:0)

试试这段代码:

b=90-a(a(:,5)<90,5);

例如:

a =

   265   104   479    13   176
    26   110   447   208   144
   379   163   179   366   464
   301    48   274   391    26
   429   374   174   184   297
   495   375   312   373    82
   465   272   399   447   420
   205   170   373   122    84
     1   417    63    65   252
   271   277   412   113   500

然后,

b=90-a(a(:,5)<90,5);

b =

   64
    8
    6