关于水文径流预测matlab

来源:百度知道 编辑:UC知道 时间:2024/06/12 00:38:23
我有一组时间序列的水文径流数据,需要用matlab编写程序预测,本人目前采用神经网络BP算法,输入向量为6个,分别为预测月前4个月径流、上一年当月的径流及本年当月的降雨量,输出量一个为预测当月径流..烦请相关各位提供代码或是相关例子.本人在输入量的代码上遇到问题..贴出供大家建议
目的通过1990-2003年的4月-8月的径流数据建立BP模型,采用1991-2000年的数据训练样本,2001-2003的样本做测试,来预测2004年2005年8月份的径流,并作误差比较
%p为输入数据,共10组,即1991-2000年的4567月份径流(前四列),第五列为1990年-1999年的8月份径流,第六列为1991年-2000年的8月份的降雨量。
p=[22.50 55.30 69.70 35.00 49.60 134.30;
48.60 89.60 58.90 17.10 36.30 189.20;
105.00 143.00 97.40 56.10 23.60 398.70;
22.40 42.80 61.10 54.20 73.90 144.80;
72.40 119.00 67.90 45.60 19.40 225.20;
49.70 72.20 61.50 45.30 30.40 143.10;
38.80 54.10 68.50 41.70 29.80 167.10;
50.30 72.30 79.80 22.50 28.90 285.60;
34.80 39.40 33.00 28.30 24.30 321.70;
54.20 85.40 46.30 31.50 41.60 201.30;]';
%t为目标数据,1991-2000年的8月径流
t=[36.3 23.5 73.9 19.4 30.4 29.8 28.9 24.3 41.6 31.4];
%归一化
for i=1:6
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:10 ??有问题报错
T(i)=(t(i)

很明显,你事前没有定义T

系统无法给T安排存储空间

加一条:
T=zeros(length(t),1)
看看。

for i=1:10
T(i)=(t(i)-min(t(i)))/(max(t(i))-min(t(i)))
end
Warning: Divide by zero.
你的表达式有问题:
(max(t(i))-min(t(i)))每次只是取出一个数,所以max(t(i))=min(t(i)),当然就是0,所以作除数出错了.
我不懂你的算法,就按照个人理解改了一下:
for i=1:10
T(i)=(t(i)-min(t))/(max(t)-min(t));%只对行向量最最大最小;
end
>> T

T =

0.3101 0.0752 1.0000 0 0.2018 0.1908 0.1743 0.0899 0.4073 0.2202

我介绍一个Q群给你,我的Q515765279.Q群:24358390