⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sunspotstx.m

📁 有趣的可视的数值方法 出自网站http://www.mathworks.com/moler
💻 M
字号:
% SUNSPOTSTX  Updated version of toolbox/matlab/demos/sunspots.m% For centuries people have noted that the face of the sun is not% constant or uniform in appearance, but that darker regions appear% at random locations on a cyclical basis.  This activity is correlated% with weather and other economically significant terrestrial phenomena.% In 1848, Rudolf Wolfer proposed a rule that combined the number and% size of these sunspots into a single index.  Using archival records,% astronomers have applied Wolfer's rule to determine sunspot activity% back to the year 1700.  Today the sunspot index is measured by many% astronomers and the worldwide distribution of the data is coordinated% by the Solar Influences Data Center at the Royal Observatory of Belgium.% % The text file sunspot.dat in the matlab/demos directory has two columns% of numbers.  The first column is the years from 1700 to 1987 and the% second column is the average Wolfer sunspot number for each year.    load sunspot.dat    t = sunspot(:,1)';    wolfer = sunspot(:,2)';    n = length(wolfer);% There is a slight upward trend to the data.  A least squares fit% gives the trend line.    c = polyfit(t,wolfer,1);    trend = polyval(c,t);    plot(t,[wolfer; trend],'-',t,wolfer,'k.')    xlabel('year')    ylabel('Wolfer index')    title('Sunspot index with linear trend')    pause    % You can definitely see the cyclic nature of the phenomenon.% The peaks and valleys are a little more than 10 years apart.% Now, subtract off the linear trend and take the finite Fourier transform.    y = wolfer - trend;    Y = fft(y);% The vector |Y|.^2^2 is the power in the signal.% A plot of power versus frequency is a periodogram.% We prefer to plot |Y|, rather than |Y|.^2, because the% scaling is not so exaggerated.% The sample rate for this data is one observation per year,% so the frequency #f# has units of cycles per year.    Fs = 1;  % Sample rate    f = (0:n/2)*Fs/n;    pow = abs(Y(1:n/2+1));    pmax = 5000;    plot([f; f],[0*pow; pow],'c-', f,pow,'b.', ...       'linewidth',2,'markersize',16)    axis([0 .5 0 pmax])    xlabel('cycles/year')    ylabel('power')    title('Periodogram')    pause    % The maximum power occurs near frequency = 0.09 cycles/year.% We would like to know the corresponding period in years/cycle.% Let's zoom in on the plot and use the reciprocal of frequency% to label the x-axis.    k = 0:44;    f = k/n;    pow = pow(k+1);    plot([f; f],[0*pow; pow],'c-',f,pow,'b.', ...       'linewidth',2,'markersize',16)    axis([0 max(f) 0 pmax])    k = 2:3:41;    f = k/n;    period = 1./f;    periods = sprintf('%5.1f|',period);    set(gca,'xtick',f)    set(gca,'xticklabel',periods)    xlabel('years/cycle')    ylabel('power')    title('Periodogram detail')    % As expected, there is a very prominent cycle with a length of% about 11.1 years.  This shows that over the last 300 years,% the period of the sunspot cycle has been slightly over 11 years.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -