八度微积分与矩阵

时间:2016-11-14 03:02:11

标签: octave

我正在开发一个八度音程的程序,我将在解释代码时进行解释。 所以我在一个名为matprec.m的文件中有这个矩阵:

function [res1] = obtemDadosPrec()
   res1 = [
1,2001,1,2,0.00;
1,2001,1,5,5.33;
2,2001,1,5,4.57;
3,2001,1,5,5.33;
4,2001,1,5,5.59;
5,2001,1,5,4.32;
2,2001,1,13,0.00;
3,2001,1,13,0.00;
4,2001,1,13,0.00;
3,2001,1,30,30.73;
2,2001,2,1,1.02;
3,2001,2,1,1.52;
4,2001,2,1,1.78;
5,2001,2,1,1.27;
1,2001,2,2,1.78;
2,2001,2,2,1.27;
3,2001,2,2,1.78;
4,2001,2,2,2.03;
5,2001,2,2,1.78;
1,2001,3,4,18.03;
3,2001,3,4,15.75;
5,2001,3,4,17.53;
1,2001,3,5,13.46;
2,2001,3,5,12.19;
3,2001,3,5,11.94;
4,2001,3,5,9.65;
5,2001,3,5,10.92;
2,2001,4,30,0.00;
4,2001,4,30,0.00];
format short g
return
endfunction

所以在这个矩阵中,第一列只是我们测量降水量的站点,第二列是年份,第三列是月份,第四列是白天,第五列是降水量。 我想在另一个文件中做的是调用这个矩阵并进行以下微积分,在第1个月我想做所有日子的平均值,例如:

在第1天第5天我有5个值5.33,4.57,5.33,5.59,4.32,所以我会这样做

(5.33 + 4.57 + 5.33 + 5.59 + 4.32)/ 5 = 5.028

而且我想在所有的日子里这样做,当我有所有的日子时,我会把它们全部加在一起,以了解当月的降水量,并在4个月内完成。

我有点卡在那里,如果你能帮助我,我会很感激,非常感谢!

1 个答案:

答案 0 :(得分:1)

首先,获取你的数组

>> Result        = obtemDadosPrec();

然后得到一个逻辑数组,其中对应于month == 1的行为真(即1)而所有其他行为false(即0)

>> month1Indices = Result(:,3) == 1;

使用此逻辑数组执行logical indexing并仅隔离'true'行。

>> month1Rows    = Result(month1Indices, :);

重复相同的程序以隔离'第5天'

>> day5Indices   = month1Rows(:,4) == 5;
>> day5Rows      = month1Rows(day5Indices , :);

计算第5列的平均值。

>> mean(day5Rows(:,5))
ans = 5.028