如何根据另一个向量的条件选择向量值

时间:2016-09-22 09:38:13

标签: matlab vector conditional-statements

在我的数据中,我想说我有两个向量:

column1  column2 

40.0000    1.2000
41.0000    1.2000
42.0000    1.2000
43.0000    1.2000
44.0000    1.2000
45.0000    1.2000
46.0000    1.2000
47.0000    1.2000
48.0000    1.2000
49.0000    1.2000
50.0000    1.2000

其中column1是温度,column2是流速。

我想要的是确定当温度高于45摄氏度时条件的流速总和是多少。即在上述示例中column2中的流量总和仅在column1的温度大于45摄氏度时的条件下。

我该怎么做?

3 个答案:

答案 0 :(得分:6)

sum(columns2(column1>45))

使用logical indexing!这样做的是,column1>45创建了一个逻辑矩阵truecolumn1的值大于45false。然后,可以使用此逻辑数组直接索引另一列。

如果您确实有2D矩阵而不是2个向量,只需使用第一列对第二列进行逻辑索引:

sum(data(data(:,1)>45),2)

答案 1 :(得分:1)

sum(columns2(column1>45)):最好的方式和更紧凑的方式。

如果你想让“天真的方式”更像古典语言并且可以理解:

acc=0;
for ii=1:lenght(column1)
    if column1(ii)>45
       acc=acc+column2(ii);
    end
end

答案 2 :(得分:0)

此代码应该有效:

sum(flowrate(temperature > 45))