用matlab預測雙色球的方法
阿新 • • 發佈:2019-02-14
下面是原始碼(fc.m):
function y=fc(isPloy,factorial);
%function y=fc(isPloy,factorial);
%factorial表示預測函式的階乘個數,預設是5
%isPloy判斷引數的個數,來決定是否,每個階都進行畫圖,預設是0(不進行畫圖)
%close %關閉圖形介面
%clear %清理系統變數
if nargin==1 %判斷引數的個數,來決定是否,每個階都進行畫圖
isPloy=1;
factorial=5;
elseif nargin>=2
else
isPloy=0;
factorial=5;
end
%n=factorial;
fd=fopen('fcout.dat','w+'); %開啟結果的儲存檔案
load fcin.dat; %載入歷史資料
x1=fcin(:,1); %載入第一列為x1
y1=fcin(:,2); %載入第二列為y1,紅球1
y2=fcin(:,3); %載入第三列為y2,紅球2
y3=fcin(:,4); %紅球3
y4=fcin(:,5); %紅球4
y5=fcin(:,6); %紅球5
y6=fcin(:,7); %紅球6
y7=fcin(:,8); %籃球
nextPoint=x1(length(x1))+1; %從第一列的最後一個值中,獲取下一個預期x軸值
k=nextPoint;
for n=1:1:factorial %n表示預測函式的階數
%%計算出預測函式的多項式引數
p1=polyfit(x1, y1, n);
p2=polyfit(x1, y2, n);
p3=polyfit(x1, y3, n);
p4=polyfit(x1, y4, n);
p5=polyfit(x1, y5, n);
p6=polyfit(x1, y6, n);
p7=polyfit(x1, y7, n);
xi=linspace(1,k , k); %產生預測的x軸向量
%%計算出根據這些函式,預測出來的與x1對應的y軸值
z1=polyval(p1, xi);
z2=polyval(p2, xi);
z3=polyval(p3, xi);
z4=polyval(p4, xi);
z5=polyval(p5, xi);
z6=polyval(p6, xi);
z7=polyval(p7, xi);
%列印預測向量的最後一個值,為預測值
%fprintf('階數為:%3d, 紅球%3d,%3d,%3d,%3d,%3d,%3d,籃球為:%3d/n',n,round(z1(k)),round(z2(k)),round(z3(k)),round(z4(k)),round(z5(k)),round(z6(k)),round(z7(k)));
fprintf(fd,'階數為:%3d, 紅球%3d,%3d,%3d,%3d,%3d,%3d,籃球為:%3d/n',n,round(z1(k)),round(z2(k)),round(z3(k)),round(z4(k)),round(z5(k)),round(z6(k)),round(z7(k)));
if isPloy>0
val=input('stop,enter');%起到暫停作用
plot(x1, y1,xi,z1, '+', x1, y2,xi,z2,'+', x1, y3,xi,z3,'+', x1, y4,xi,z4,'+', x1, y5,xi,z5 ,'+', x1, y6,xi,z6,'+', x1, y7,xi,z7 ,'o' );
end
end
fclose(fd);
close
type fcout.dat
%畫圖
plot(x1, y1,xi,z1, '+', x1, y2,xi,z2,'+', x1, y3,xi,z3,'+', x1, y4,xi,z4,'+', x1, y5,xi,z5 ,'+', x1, y6,xi,z6,'+', x1, y7,xi,z7 ,'o' );
%plot(x1, y1,xi,z1, x1, y2,xi,z2, x1, y3,xi,z3, x1, y3,xi,z3, x1, y4,xi,z4 , x1, y5,xi,z5, x1, y6,xi,z6 ,x1, y7,xi,z7 );
下面是 fcint.dat的資料:
01 03 05 18 20 27 33 01 2007-125
02 09 10 19 23 26 31 09 2007-126
03 06 09 13 16 24 28 11 2007-127
04 09 10 19 21 27 31 05 2007-128
05 05 07 20 21 22 30 08 2007-129
06 03 05 09 11 27 31 04 2007-130
07 03 05 07 16 22 27 05 2007-131
08 01 09 16 21 22 23 05 2007-132
09 03 06 07 11 13 33 10 2007-133
10 01 04 10 13 18 25 15 2007-134
11 01 11 16 26 31 33 16 2007-135
12 01 02 18 21 25 29 14 2007-136
13 03 07 08 18 20 22 03 2007-137
14 02 03 15 17 19 25 16 2007-138
15 06 10 12 14 16 22 06 2007-139
16 01 05 16 21 22 26 11 2007-140
17 02 03 04 06 17 31 08 2007-141
18 11 20 25 26 27 30 08 2007-142
19 01 06 22 23 24 26 04 2007-143
20 08 14 23 25 28 32 16 2007-145
21 08 09 11 12 25 31 11 2007-145
22 04 18 22 24 26 30 09 2007-146
23 03 07 18 24 26 27 04 2007-147
24 03 09 16 17 23 28 07 2007-148
25 01 17 19 22 28 30 03 2007-149
26 03 05 11 13 19 24 05 2007-150
27 01 06 10 11 23 25 02 2007-151
28 11 17 21 29 30 33 08 2007-152
29 01 04 19 20 25 31 15 2007-153
30 02 04 07 09 14 29 03 2008-1
31 03 04 18 22 25 29 09 2008-2
function y=fc(isPloy,factorial);
%function y=fc(isPloy,factorial);
%factorial表示預測函式的階乘個數,預設是5
%isPloy判斷引數的個數,來決定是否,每個階都進行畫圖,預設是0(不進行畫圖)
%close %關閉圖形介面
%clear %清理系統變數
if nargin==1 %判斷引數的個數,來決定是否,每個階都進行畫圖
isPloy=1;
factorial=5;
elseif nargin>=2
else
isPloy=0;
factorial=5;
end
%n=factorial;
fd=fopen('fcout.dat','w+'); %開啟結果的儲存檔案
load fcin.dat; %載入歷史資料
x1=fcin(:,1); %載入第一列為x1
y1=fcin(:,2); %載入第二列為y1,紅球1
y2=fcin(:,3); %載入第三列為y2,紅球2
y3=fcin(:,4); %紅球3
y4=fcin(:,5); %紅球4
y5=fcin(:,6); %紅球5
y6=fcin(:,7); %紅球6
y7=fcin(:,8); %籃球
nextPoint=x1(length(x1))+1; %從第一列的最後一個值中,獲取下一個預期x軸值
k=nextPoint;
for n=1:1:factorial %n表示預測函式的階數
%%計算出預測函式的多項式引數
p1=polyfit(x1, y1, n);
p2=polyfit(x1, y2, n);
p3=polyfit(x1, y3, n);
p4=polyfit(x1, y4, n);
p5=polyfit(x1, y5, n);
p6=polyfit(x1, y6, n);
p7=polyfit(x1, y7, n);
xi=linspace(1,k , k); %產生預測的x軸向量
%%計算出根據這些函式,預測出來的與x1對應的y軸值
z1=polyval(p1, xi);
z2=polyval(p2, xi);
z3=polyval(p3, xi);
z4=polyval(p4, xi);
z5=polyval(p5, xi);
z6=polyval(p6, xi);
z7=polyval(p7, xi);
%列印預測向量的最後一個值,為預測值
%fprintf('階數為:%3d, 紅球%3d,%3d,%3d,%3d,%3d,%3d,籃球為:%3d/n',n,round(z1(k)),round(z2(k)),round(z3(k)),round(z4(k)),round(z5(k)),round(z6(k)),round(z7(k)));
fprintf(fd,'階數為:%3d, 紅球%3d,%3d,%3d,%3d,%3d,%3d,籃球為:%3d/n',n,round(z1(k)),round(z2(k)),round(z3(k)),round(z4(k)),round(z5(k)),round(z6(k)),round(z7(k)));
if isPloy>0
val=input('stop,enter');%起到暫停作用
plot(x1, y1,xi,z1, '+', x1, y2,xi,z2,'+', x1, y3,xi,z3,'+', x1, y4,xi,z4,'+', x1, y5,xi,z5 ,'+', x1, y6,xi,z6,'+', x1, y7,xi,z7 ,'o' );
end
end
fclose(fd);
close
type fcout.dat
%畫圖
plot(x1, y1,xi,z1, '+', x1, y2,xi,z2,'+', x1, y3,xi,z3,'+', x1, y4,xi,z4,'+', x1, y5,xi,z5 ,'+', x1, y6,xi,z6,'+', x1, y7,xi,z7 ,'o' );
%plot(x1, y1,xi,z1, x1, y2,xi,z2, x1, y3,xi,z3, x1, y3,xi,z3, x1, y4,xi,z4 , x1, y5,xi,z5, x1, y6,xi,z6 ,x1, y7,xi,z7 );
下面是 fcint.dat的資料:
01 03 05 18 20 27 33 01 2007-125
02 09 10 19 23 26 31 09 2007-126
03 06 09 13 16 24 28 11 2007-127
04 09 10 19 21 27 31 05 2007-128
05 05 07 20 21 22 30 08 2007-129
06 03 05 09 11 27 31 04 2007-130
07 03 05 07 16 22 27 05 2007-131
08 01 09 16 21 22 23 05 2007-132
09 03 06 07 11 13 33 10 2007-133
10 01 04 10 13 18 25 15 2007-134
11 01 11 16 26 31 33 16 2007-135
12 01 02 18 21 25 29 14 2007-136
13 03 07 08 18 20 22 03 2007-137
14 02 03 15 17 19 25 16 2007-138
15 06 10 12 14 16 22 06 2007-139
16 01 05 16 21 22 26 11 2007-140
17 02 03 04 06 17 31 08 2007-141
18 11 20 25 26 27 30 08 2007-142
19 01 06 22 23 24 26 04 2007-143
20 08 14 23 25 28 32 16 2007-145
21 08 09 11 12 25 31 11 2007-145
22 04 18 22 24 26 30 09 2007-146
23 03 07 18 24 26 27 04 2007-147
24 03 09 16 17 23 28 07 2007-148
25 01 17 19 22 28 30 03 2007-149
26 03 05 11 13 19 24 05 2007-150
27 01 06 10 11 23 25 02 2007-151
28 11 17 21 29 30 33 08 2007-152
29 01 04 19 20 25 31 15 2007-153
30 02 04 07 09 14 29 03 2008-1
31 03 04 18 22 25 29 09 2008-2