当前位置:文档之家› 基于MATLAB股票市场的线性预测

基于MATLAB股票市场的线性预测

基于MATLAB 股票市场的线性预测 摘要:随着计算技术和信息科学的飞速发展,信号处理逐渐发展成一门独立的学科,成为信息科学的重要组成部分,广泛应用在经济、金融等各种领域中,其中线性预测是最为广泛的一种方法。

本设计借助MATLAB 的技术工具软件对股票价格的数据信号图进行分析,来构造一个线性预测器。

并用MATLAB 生成一个豪华的界面,把线性预测的结果直观、明了的表现出来。

本设计在理解信号与系统基本原理的前提下,利用MATLAB 设计了一个线性预测系统,该系统利用一个离散时间有限脉冲响应(FIR )滤波器来解决属于预测建模等问题。

这是一个基于MATLAB 计算机仿真的股票线性预测模型,它用股票的开盘、收盘、最高、最低四种价位为源信号进行预测,可以选择滤波器的阶数来调整它的精确度,能够做到预测误差最小。

关键词:线性预测系统、MATLAB 、离散时间有限脉冲响应(FIR )滤波器1.股票线性预测的原理本文设计一个系统,它能够单独的根据过去的值预测x[n]信号的将来值。

对于线性预测来说,这个系统是一个FIR 滤波器,它根据过去值的一种线性组合算出一个预测量:[][]∑=∧--=pk k k n a n X 1 (1-1)式1-1中的就是预测值。

因为用了信号先前的p 个值构成这种预测,所以这是一个p 阶预测器。

给定某一固定的滤波器阶p ,线性预测问题就是要确定一组滤波器系数,以使得“最好的”实现1-1的预测确实这个“最好”系数的最常用的准则是某些系数,使得总的平方预测误差达到最小:[][][]2121||||∑∑=∧=-==N n N n n x n x n e E (1-2)式1-2中,假设序列x[n]的长度为N ,有几个途径可以用来对k a 求解以使式1-2中E 最小。

最简单的方法是利用MATLAB 来解这个联立线性方程组。

假设N>P,这个线性预测问题可以转换成式1-3的矩阵形式。

⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+++⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--+-][]2[]1[][]2[]1[]1[][]1[]2[][]1[11N x p x p x N e p e p e a a N x p N x p x x p x x (1-3)式1-3还可以紧凑一些写成-Xa+e=x 。

这个方程用来对向量a 求解,以使总平方预测误差e ’*e 最小。

式1-3左边放一半减号是为了让“预测误差滤波器”能表示成e=Xa+x 。

2.利用matlab 实现股票预测的编程思想利用matlab 实现股票线性预测的编程流程图如图1所示。

图1 股票预测流程图首先根据信源X[n]构造矩阵X ,求出滤波器的系数k a ,得到第一个预测值,后重新构造矩阵X1,然后根据X1在循环回重新构造下一个矩阵X ,x 。

得到最终的预测值。

若已知信源x[n],求解系数k a ,则可根据上述流程求出x[n+1],x[n+2]等一系列预测值。

3.计算机仿真股票线性预测模型3.1模型简介本模型一共有两个主程序,分别做出主界面“股票线性预测”与预测界面“预测现场”。

主界面程序为feimain.m ,它调用了预测器界面程序highpan.m 在highpan.m 中又分别调用了子程序xtxs.m 来求解滤波器系数ak,子程序hqy_wav.m 来求解预测值,子程序gett.m 载入数据和四个信源,即开盘价Open.m 、收盘价Close21.m 、最高价High.m 与最低价Low.m 。

3.2使用简介当执行feimain.m 时,将出现一个主界面如图2所示。

图2 股票预测主界面点击“欢迎进入股市预测”按钮就可调出预测器界面,如图3所示。

图3 预测器界面点击“指导老师”或者“设计人员”菜单项都可弹出相应的姓名。

如图4所示。

图44主要编辑程序4.1主界面程序%主界面程序clc;nandy1=[0.5 0.5 0.5];nandy=[1 1 1];nandy2=[0.7 0.7 0.7];%设定图形界面h_mm=figure('name','股票预测界面',...'units','normalized','position',[0.2 0.2 0.5 0.3],...'menubar','none','numbertitle','off','C olor',nandy);%设定图形句柄的各项属性set(h_mm,'defaultuicontrolfontsize',13);set(h_mm,'defaultuicontrolbackgroundcolor',nandy2);set(h_mm,'defaultuicontrolunits','normalized');set(h_mm,'defaultuicontrolfontunits','pixels');set(h_mm,'defaultuicontrolfontname','隶书');h_text=uicontrol(h_mm,'style','text','string','Welcome toyou!','position',...[0.29 0.4 0.45 0.4],'backgroundcolor','w','fontsize',24);h_push=uicontrol(h_mm,'style','push','string','欢迎进入股票预测','position',...[0.31 0.3 0.4 0.18],'backgroundcolor',...[0.7 0.7 0.7],'fore','k','fontsize',18,'call','close,highpan');运行主程序后如图5点击“欢迎进入股票预测”按钮就可调用预测器主程序运行结果。

图 54.2预测器主程序nandy1=[0.6 0.6 0.6];nandy=[1 1 1];nandy2=[0.7 0.7 0.7];N1=10;N=10;hyh=1;%设置图形界面h_mm=figure('name','预测现场',...'units','normalized','position',[0.15 0.1 0.85 0.45],...'menubar','none','numbertitle','off','color',nandy);%设置图形句柄的各项属性set(h_mm,'defaultuicontrolfontsize',13);set(h_mm,'defaultuicontrolbackgroundcolor',nandy2);set(h_mm,'defaultuicontrolunits','normalized');set(h_mm,'defaultuicontrolfontunits','pixels');set(h_mm,’defaultuicontrolfontname','隶书');%设置轴对象h_axes1=axes('position',[0.09 0.4 0.4 0.5],'visible','on');grid on;h_axes2=axes('position',[0.58 0.4 0.4 0.5],'visible','on');grid on;%设定菜单h_menu1=uimenu(h_mm,'Label','指导老师¦');h_menu2=uimenu(h_mm,'Label','设计人员');zmenu=uimenu(h_menu1,'Label','');h_menu3=uimenu(h_menu2,'Label','徐海东','separator','on');%设定空间区域框h_framel=uicontrol(h_mm,'style','frame','position',...[0.06 0.03 0.9 0.23],'backgroundcolor',nandy1);%设定文本框h_editl=uicontrol(h_mm,'style','edit','position',[0.38 0.07 0.15 0.08],...'back','w','string','10','call',['N1=gett(h_editl,1);',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh)']);h_edit2=uicontrol(h_mm,'style','edit','position',[0.6 0.07 0.15 0.08],...'back','w','string','10','call',['N1=gett(h_edit2,1);',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh)']);Ijp=('N1=get(h_editl,"value")');%设定各种静态文本框h_text1=uicontrol(h_mm,'style','text','position', [0.08 0.17 0.180.07],'string',...'预测类型','backgroundcolor',nandy1,'fore','w');h_text2=uicontrol(h_mm,'style','text','position', [0.35 0.17 0.180.07],'string',...'预测阶数','backgroundcolor',nandy1,'fore','w');h_text3=uicontrol(h_mm,'style','text','position', [0.58 0.17 0.180.07],'string',...'预测周数','backgroundcolor',nandy1,'fore','w');h_push=uicontrol(h_mm,'style','push','position', [0.8 0.07 0.10.1],'string',...'¹关闭',’call’,’close’,'backgroundcolor',nandy1,'fore','w');%设定弹出框h_popupl=uicontrol(h_mm,'style','popup','string',...'最高价预测|最低价预测|开盘预测收盘预测',...'position',[0.08 0.13 0.210.03],'back','w','call',['num=gett(h_popupl,2);',...'if num==1,hyh=1;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'if num==2,hyh=2;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'if num==3,hyh=3;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'if num==4,hyh=4;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,']);hqy_wav(h_axes1,h_axes2,N1,N,hyh);主程序调用出预测界面(如图6)。

相关主题