【发布时间】:2017-04-06 02:59:38
【问题描述】:
我正在开发一个 octave 程序,我将在输入代码时对其进行解释。所以我在一个名为 matprec.m 的文件中有这个矩阵:
function [res1] = matprec()
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 个月内都这样做。
程序应该是这样运行的,我已经用这段代码完成了:
Result = matprec();
month1Indices = Result(:,3) == 1;
month1Rows = Result(month1Indices, :);
day5Indices = month1Rows(:,4) == 5;
day5Rows = month1Rows(day5Indices , :);
mean(day5Rows(:,5));
Result2 = matprec();
month1Indices2 = Result2(:,3) == 1;
month1Rows2 = Result2(month1Indices2, :);
day5Indices2 = month1Rows2(:,4) == 30;
day5Rows2 = month1Rows2(day5Indices2 , :);
mean(day5Rows2(:,5));
mes1 = mean(day5Rows(:,5)) + mean(day5Rows2(:,5));
lol = [mes1, mes2, mes3, 0, 0, 0, 0, 0, 0, 0, 0, 0];
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
plot(x,lol);
但这仅适用于第一个月,所以我正在尝试做一个 while 循环来为所有月份和整天执行此操作并绘制它,我有这个但它只是永远持续下去:
a = 1
b = 1
while (a <= 4 && b <= 30)
Result = matprec();
month1Indices = Result(:,3) == a;
month1Rows = Result(month1Indices, :);
day5Indices = month1Rows(:,4) == b;
day5Rows = month1Rows(day5Indices , :);
mean(day5Rows(:,5))
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
plot(x,mean(day5Rows(:,5)));
endwhile
抱歉,我知道它有点长,但我需要解释一下,谢谢。
【问题讨论】:
-
a 和 b 在哪里递增?
标签: while-loop octave