龙空技术网

基于MATLAB的二次指数平滑法预测计算GUI界面

云龙派 348

前言:

此刻兄弟们对“matlab平滑曲线图”可能比较看重,大家都想要知道一些“matlab平滑曲线图”的相关知识。那么小编同时在网上收集了一些对于“matlab平滑曲线图””的相关内容,希望各位老铁们能喜欢,咱们快快来了解一下吧!

指数平滑法是一种特殊的加权平均法,加权的特点是对离预测值较近的历史数据给予较大的权数,对离预测期较远的历史数据给予较小的权数,权数由近到远按指数规律递减,所以,这种预测方法被称为指数平滑法。它可分为一次指数平滑法、二次指数平滑法及更高次指数平滑法。

一次指数平滑法虽然克服了移动平均法的缺点,但当时间序列的变动出现直线趋势时,用一次指数平滑法进行预测,仍存在明显的滞后偏差,因此,也必须加以修正,再作二次指数平滑,利用滞后偏差的规律建立直线趋势模型,这就是二次指数平滑法。其计算公式为:

GUI界面如下

加载数据——输入模型参数alpha、预测数据个数、x轴坐标名称、y轴坐标名称——点击开始计算即可出现结果,同时会在当前文件夹下生成预测数据的excel文件和图片预测.jpg。需要完整GUI程序,可以进行赞赏后截图(10元及以上),进行联系,或者在微信公众号“云龙派”内回复截图,几小时内会回复。界面编程不易,还请见谅!

举例计算

猪肉价格数据(数据来源:国家统计局)

日期

猪肉(去骨统肉)集贸市场价格当期值(元/公斤)

2020年1月

54.09

2020年2月

58.08

2020年3月

53.62

2020年4月

49.85

2020年5月

45.44

2020年6月

49.84

2020年7月

54.52

2020年8月

55.44

2020年9月

53.21

2020年10月

47.9

注:全国200个农产品集贸市场调查县,受新型冠状病毒肺炎疫情影响,2月份北京、黑龙江、山东、河南、湖北、重庆等共有26个县集贸市场被迫关闭,无法采集数据。为确保数据可比,1月份和上年同期数据做了同口径处理。

界面计算:

点击加载数据按键,加载数据

输入参数,点击开始计算

GUI主要程序如下:

function pushbutton9_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton9 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global dataalpha = str2num(get(handles.edit13,'string'));num = str2num(get(handles.edit16,'string'));str1 = get(handles.edit17,'string');str2 = get(handles.edit18,'string');%   yt原始数据以列向量方式存放%   alpha 取值yt = data;st1(1)=yt(1);st2(1)=yt(1);n=length(yt);%   预测计算公式for i=2:n    st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);    st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);enda=2*st1-st2;b=alpha/(1-alpha)*(st1-st2);yhat=a+b; yhat=yhat';for i = 1:numyu(i) = a(end)+b(end)*i;enddata11 = [yhat' yu];figure;plot(data11,'b-*','linewidth',1);hold onplot(n:n+num,data11(end-num:end),'r-o','linewidth',1);grid on;xlabel(str1);ylabel(str2);legend('历史走势','未来走势')saveas(gcf,'预测.jpg');%保存生成的图片close(gcf);axes(handles.axes3);plot(data11,'b-*','linewidth',1);hold onplot(n:n+num,data11(end-num:end),'r-o','linewidth',1);grid on;xlabel(str1);ylabel(str2);legend('历史走势','未来走势')xlswrite('预测的数据.xlsx',data11');set(handles.uitable3,'data',data11');

作 者 | 郭志龙

编 辑 | 郭志龙

校 对 | 郭志龙

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

标签: #matlab平滑曲线图 #matlab画平滑曲线