1. matlab中灰色模型新陳代謝模型的代碼
result(i) = gm11(x0,1); % 將預測一期的結果保存到result中,這段代碼總是有錯誤提示。其原因是題主缺這個gm11() 灰色模型自定義函數。解決方法,下載或求助這個函數文件。
2. 求助灰色馬爾科夫模型的matlab代碼
matalb工具箱(hmmbox)中都是函數,沒有輸入參數是無法運行的。 你可以新建一個文件,對函數的輸入變數復試,然後調用函數就可以運行了。 我剛學matlab也是這樣,建議先看一本入門的書籍,《matlab寶典》不錯。
3. matlab的灰色模型預測怎麼編程
灰色預測模型為GM(1,1) 灰參數a和u的值: a=-0.0323252892223847 u=14042.3315313962 原始序列預測值: 13205 14705 15188 15687 16203 16735 17285 17853 18439 19045 累加序列預測值: 14705 15188 15687 16203 16735 17285 17853 18439 1904...
4. 請您幫忙跑一個Matlab的灰色模型的模型。
根據你提供的數據,從下圖不難看出,用灰色模型來預測是不太合適的。
5. 怎樣用matlab實現灰色模型(GM(1.1))
clear;
clc;
x0=[127627 128453 129227 129988 130756];
n=length(x0);
lamda=x0(1:n-1)./x0(2:n)
range=minmax(lamda)
x1=cumsum(x0)
for i=2:n
z(i)=0.5*(x1(i)+x1(i-1));
end
B=[-z(2:n)',ones(n-1,1)];
Y=x0(2:n)';
u=B\Y
x=dsolve('Dx+a*x=b','x(0)=x0');
x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,'t',[0:n-1]);
digits(6),y=vpa(x) %為提高預測精度,先計算預測值,再顯示微分方程的解
yuce=[x0(1),diff(yuce1)]
epsilon=(x0-yuce)./x0 %計算殘差
delta=abs(epsilon./x0) %計算相對誤差
rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %計算級比偏差值
6. matlab 灰色預測模型 進,菜鳥高分求救!
先把a1那樣輸入,然後把後面所有1:7改為1:8,1:8改為1:9,然後你要看a1第一個數據是哪一年的,比如你最後想輸出2025年的數據,那你就看2025和a1第一個數據的年份之差,設為t。那2025年預測量=y(t+1)-y(t)。ps:你是美賽的吧。。。
7. matlab解決灰色模型代碼 有點錯誤 求教
樓主,我試了下,沒錯啊,這段代碼你不能全部復制到matlab的命令窗口中去
首先,你得把矩陣X賦值,X不是你要處理的數據么?沒有X程序運行不下去,
然後,將矩陣X賦值後你只需要復制下面這段代碼就OK了
clc %清屏,以使結果獨立顯示
format long; %設置計算精度
if length(x(:,1))==1 %對輸入矩陣進行判斷,如不是一維列矩陣,進行轉置變換
x=x';
end
n=length(x); %取輸入數據的樣本量
z=0;
for i=1:n %計算累加值,並將值賦予矩陣be
z=z+x(i,:);
be(i,:)=z;
end
for i=2:n %對原始數列平行移位
y(i-1,:)=x(i,:);
end
for i=1:n-1 %計算數據矩陣B的第一列數據
c(i,:)=-0.5*(be(i,:)+be(i+1,:));
end
for j=1:n-1 %計算數據矩陣B的第二列數據
e(j,:)=1;
end
for i=1:n-1 %構造數據矩陣B
B(i,1)=c(i,:);
B(i,2)=e(i,:);
end
alpha=inv(B'*B)*B'*y; %計算參數 矩陣
for i=1:n+1 %計算數據估計值的累加數列,如改為n+1為n+m可預測後m-1個值
ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);
end
var(1,:)=ago(1,:)
for i=1:n %如改n為n+m-1,可預測後m-1個值
var(i+1,:)=ago(i+1,:)-ago(i,:); %估計值的累加數列的還原,並計算出下一預測值
end
for i=1:n
error(i,:)=var(i,:)-x(i,:); %計算殘差
end
c=std(error)/std(x) %調用統計工具箱的標准差函數計算後驗差的比值c
結果為c,照我說的做吧,肯定能出來,我在matlab7.0上跑的
8. 用matlab編程灰色預測模型(1,1)
定義函數:
function pre = GM11(x)
%x,建模數據序列x = [x(1),x(2),...,x(n)]
% pre,由GM11模型得到的預測值,即由x估計出的x(n+1)
n = length(x);
x1 = cumsum(x);
z1 = (x1(1:n-1)+x1(2:n))/2;
Y = x(2:length(x))';
B = [-z1',ones(n-1,1)];
A = (B'*B)\B'*Y;%GM(1,1)模型的a,b參數組成的向量.
beta = A(2)/(1+.5*A(1));
alpha = A(1)/(1+.5*A(1));
%初始序列x0(k)模擬後的隨時間t變化的序列
f = @(t)(beta-(alpha)*x(1))*exp(-(A(1)*(t-2)));
pre = f(n+1);
調用
x=[1879 2208 2948 2852 2774 2926 4680 3691];
GM11(x)
9. matlab 灰色預測 模型(1,1)
y=[56.16555.6549.52534.58514.4059.5258.9706.4754.110];
fori=1:9
j=1:i;
y1(i)=sum(y(j));
end
fori=2:9
y2(i-1)=-0.5*(y1(i-1)+y1(i));
end
b=ones(8,1);
b=[y2',b];
yy=y(2:end)';
a=(b'*b)^(-1)*b'*yy;
yy1(1)=y(1);
fori=2:11
yy1(i)=(y(1)-a(2)/a(1))*(exp(-a(1)*(i-1))-exp(-a(1)*(i-2)));
end
x=1980:1988;
x1=1980:1990;
plot(x1,yy1,'r')
holdon
plot(x,y,'b')
gridon
10. matlab運行灰色模型時出錯
Maximum recursion limit of 500 reached.即:矩陣大小限制是500。
Use set(0,'RecursionLimit',N)to change the limit.即:可以從新設置這個限制,在函數頭一句加上
set(0,'RecursionLimit',N)。N為你模型矩陣賦值。
Be aware that exceeding your available stack space can crash MATLAB and/or your computer.小心超過你計算機能給matlab分配的可用堆棧數量。