1. 程式人生 > >用matlab預測雙色球的方法

用matlab預測雙色球的方法

下面是原始碼(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