MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码算法设计
太阳黑子数据模拟分析程序源码        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:源码程序 - 算法设计

推荐星级:

更新时间:2018-04-29 19:24:21

源码简介

clc; clear; close all; warning off; load Sunspot.txt %YEAR MON SSN DEV %画出导入的活动数据 YEAR = Sunspot(:,1); MON = Sunspot(:,2); SSN = Sunspot(:,3); %sun spot number DEV = Sunspot(:,4); %标准偏差表 figure; subplot(211);plot(SSN,'b.'); title('SSN'); subplot(212);plot(DEV,'b.'); title('DEV'); addpath 'funcs\' %步骤1,Identify a reasonable frequency, f. %步骤1,Identify a reasonable frequency, f. %步骤1,Identify a reasonable frequency, f. %由于早期的数据不精确,可以选择后期的数据作为计算频率的数据 K = 20;%前22年数据去除 Start = 12*K+1; mainPeriod = func_cycle_cal(SSN(Start:end)); disp('太阳黑子的活动周期为(单位年):'); mainPeriod %步骤2,Compute X1 = cos(2πft) and X2 = sin(2πft). %步骤2,Compute X1 = cos(2πft) and X2 = sin(2πft). %步骤2,Compute X1 = cos(2πft) and X2 = sin(2πft). t = 1/(12):1/(12):length(SSN)/(12); yc = cos(2*pi*t/mainPeriod); ys = sin(2*pi*t/mainPeriod); figure; subplot(211); plot(yc,'r');hold on plot(ys,'b');hold off legend('X1','X2'); subplot(212); plot(yc,'r--');hold on plot(ys,'k--');hold on plot(SSN/max(SSN),'b.');hold off legend('X1','X2','SSN'); %步骤3,Fit the linearized cyclic model with least squares using Matlab. %步骤3,Fit the linearized cyclic model with least squares using Matlab. %步骤3,Fit the linearized cyclic model with least squares using Matlab. %Nt = β0 + β1X1 + β2X2 + error. %最小二乘辨识 c0 = [1 1 1]';%直接给出被辨识参数的初始值,即一个充分小的实向量 p0 = 10^6*eye(3,3); %直接给出初始状态P0,即一个充分大的实数单位矩阵 for k=1:length(SSN); %开始求K h1 =[1,yc(k),ys(k)]'; x = h1'*p0*h1 + 99; x1 = inv(x); %开始求K(k) k1 = p0*h1*x1; %求出K的值 d1 = SSN(k)-h1'*c0; c1 = c0+k1*d1; %求被辨识参数c e1 = c1-c0; %求参数当前值与上一次的值的差值 e2 = e1./c0; %求参数的相对变化 e(:,k) = e2; %把当前相对变化的列向量加入误差矩阵的最后一列 c0 = c1; %新获得的参数作为下一次递推的旧参数 c(:,k) = c1; %把辨识参数c 列向量加入辨识参数矩阵的最后一列 p1 = p0-k1*k1'*[h1'*p0*h1+1]; %求出 p(k)的值 p0 = p1; %给下次用 end %估计得到的太阳黑子活动曲线 for k=1:length(SSN); %开始求K Y_predict(k) = c(1,k) + c(2,k)*yc(k) + c(3,k)*ys(k); end figure; plot(Y_predict,'b','LineWidth',2);hold on; plot(SSN,'r');hold off; legend('预测SSN','实际SSN'); %步骤4: Interpret the ?tted model parameters in terms of amplitude,frequency, and phase shift of the cyclic model. %步骤4: Interpret the ?tted model parameters in terms of amplitude,frequency, and phase shift of the cyclic model. %步骤4: Interpret the ?tted model parameters in terms of amplitude,frequency, and phase shift of the cyclic model. %根据预测结果计算 %ut = Bcos(2*pi*f*t+o); t = 1/(12):1/(12):length(SSN)/(12); for k = 1:length(SSN); beta0(k) = c(1,k); beta1(k) = c(2,k); beta2(k) = c(3,k); BETA(k) = sqrt(beta1(k)^2 + beta2(k)^2); fai(k) = atan(-beta2(k)); %ut = Bcos(2*pi*f*t+o); %t = 1/(12):1/(12):length(SSN)/(12); %yc = cos(2*pi*t/mainPeriod); ut(k) = BETA(k)*cos(2*pi*t(k)/mainPeriod+fai(k)) + beta0(k); end figure; plot(ut(40:end),'b','LineWidth',2); hold on; plot(SSN(40:end),'r'); hold off; legend('Bcos(2*pi*f*t+o)','实际SSN'); %步骤5: Use residual plots to validate/evaluate the model. %步骤5: Use residual plots to validate/evaluate the model. %步骤5: Use residual plots to validate/evaluate the model. %计算误差 Err = Y_predict' - SSN; figure; plot(Err,'.'); xlabel('Year'); ylabel('Nt - Ut'); %步骤6: Consider how the model might be improved. %步骤6: Consider how the model might be improved. %步骤6: Consider how the model might be improved. %模型的改进 %注意,从上面的分析结果可知,预测模型的误差较大,做如下的改进,使其误差较小 %最小二乘辨识 clear h1 x x1 k1 d1 c1 e1 e2 e c0 c p1 p0 c0 = [1 1 1 1 1 1 1 1]';%直接给出被辨识参数的初始值,即一个充分小的实向量 p0 = 10^6*eye(8,8); %直接给出初始状态P0,即一个充分大的实数单位矩阵 t = 1/(12):1/(12):length(SSN)/(12); yc2 = cos(2*pi*t/(2*mainPeriod)); ys2 = sin(2*pi*t/(2*mainPeriod)); yc3 = cos(2*pi*t/(3*mainPeriod)); ys3 = sin(2*pi*t/(3*mainPeriod)); for k=1:length(SSN); %开始求K h1 =[1,k,yc(k),ys(k),yc2(k),ys2(k),yc3(k),ys3(k)]'; x = h1'*p0*h1 + 99; x1 = inv(x); %开始求K(k) k1 = p0*h1*x1; %求出K的值 d1 = SSN(k)-h1'*c0; c1 = c0+k1*d1; %求被辨识参数c e1 = c1-c0; %求参数当前值与上一次的值的差值 e2 = e1./c0; %求参数的相对变化 e(:,k) = e2; %把当前相对变化的列向量加入误差矩阵的最后一列 c0 = c1; %新获得的参数作为下一次递推的旧参数 c(:,k) = c1; %把辨识参数c 列向量加入辨识参数矩阵的最后一列 p1 = p0-k1*k1'*[h1'*p0*h1+1]; %求出 p(k)的值 p0 = p1; %给下次用 end %估计得到的太阳黑子活动曲线 for k=1:length(SSN); %开始求K Y_predict2(k) = c(1,k) + c(2,k)*k + c(3,k)*yc(k) + c(4,k)*ys(k) + c(5,k)*yc2(k) + c(6,k)*ys2(k) + c(7,k)*yc3(k) + c(8,k)*ys3(k); end figure; plot(Y_predict2,'b','LineWidth',2);hold on; plot(SSN,'r');hold off; legend('预测SSN','实际SSN');
提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

太阳黑子数据模拟分析程序源码 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:203.12500 毫秒