|
|
MATLABƵÆ×·ÖÎö³ÌÐò
%FFT±ä»»,»ñµÃ²ÉÑùÊý¾Ý»ù±¾ÐÅÏ¢£¬Ê±Óòͼ£¬ÆµÓòͼ
%ÕâÀïµÄÏòÁ¿¶¼ÓÃÐÐÏòÁ¿£¬¼ÙÉè±»²â±äÁ¿ÊÇËÙ¶È£¬µ¥Î»Îªm/s
clear;
close all;
load data.txt %ͨ¹ýÒÇÆ÷²âÁ¿µÄÔʼÊý¾Ý£¬´æ´¢Îªdata.txtÖУ¬¸½¼þÖÐÓÐÒ»¸öÄ£°æ(¸ÃÐźż«²»¹æÔò)
A=data; %½«²âÁ¿Êý¾Ý¸³¸øA£¬´ËʱAΪN¡Á2µÄÊý×é
x=A(:,1); %½«AÖеĵÚÒ»Áи³Öµ¸øx£¬ÐγÉʱ¼äÐòÁÐ
x=x'; %½«ÁÐÏòÁ¿±ä³ÉÐÐÏòÁ¿
y=A(:,2); %½«AÖеĵڶþÁи³Öµ¸øy£¬Ðγɱ»²âÁ¿ÐòÁÐ
y=y'; %½«ÁÐÏòÁ¿±ä³ÉÐÐÏòÁ¿
%ÏÔʾÊý¾Ý»ù±¾ÐÅÏ¢
fprintf('\nÊý¾Ý»ù±¾ÐÅÏ¢£º\n')
fprintf(' ²ÉÑùµãÊý = %7.0f \n',length(x)) %Êä³ö²ÉÑùÊý¾Ý¸öÊý
fprintf(' ²ÉÑùʱ¼ä = %7.3f s\n',max(x)-min(x)) %Êä³ö²ÉÑùºÄʱ
fprintf(' ²ÉÑùƵÂÊ = %7.1f Hz\n',length(x)/(max(x)-min(x))) %Êä³ö²ÉÑùƵÂÊ
fprintf(' ×îСËÙ¶È = %7.3f m/s\n',min(y)) %Êä³ö±¾´Î²ÉÑù±»²âÁ¿×îСֵ
fprintf(' ƽ¾ùËÙ¶È = %7.3f m/s\n',mean(y)) %Êä³ö±¾´Î²ÉÑù±»²âÁ¿Æ½¾ùÖµ
fprintf(' ËÙ¶ÈÖÐÖµ = %7.3f m/s\n',median(y)) %Êä³ö±¾´Î²ÉÑù±»²âÁ¿ÖÐÖµ
fprintf(' ×î´óËÙ¶È = %7.3f m/s\n',max(y)) %Êä³ö±¾´Î²ÉÑù±»²âÁ¿×î´óÖµ
fprintf(' ±ê×¼·½²î = %7.3f \n',std(y)) %Êä³ö±¾´Î²ÉÑùÊý¾Ý±ê×¼²î
fprintf(' Ð ·½ ²î = %7.3f \n',cov(y)) %Êä³ö±¾´Î²ÉÑùÊý¾Ýз½²î
fprintf(' ×ÔÏà¹ØÏµÊý = %7.3f \n\n',corrcoef(y)) %Êä³ö±¾´Î²ÉÑùÊý¾Ý×ÔÏà¹ØÏµÊý
%ÏÔʾÔʼÊý¾ÝÇúÏßͼ£¨Ê±Óò£©
subplot(2,1,1);
plot(x,y) %ÏÔʾÔʼÊý¾ÝÇúÏßͼ
axis([min(x) max(x) 1.1*floor(min(y)) 1.1*ceil(max(y))]) %ÓÅ»¯×ø±ê£¬¿ÉÓпÉÎÞ
xlabel('ʱ¼ä (s)');
ylabel('±»²â±äÁ¿y');
title('ÔʼÐźÅ(ʱÓò)');
grid on;
%¸µÁ¢Ò¶±ä»»
y=y-mean(y); %ÏûÈ¥Ö±Á÷·ÖÁ¿£¬Ê¹ÆµÆ×¸üÄÜÌåÏÖÓÐЧÐÅÏ¢
Fs=2000; %µÃµ½ÔʼÊý¾Ýdata.txtʱ£¬ÒÇÆ÷µÄ²ÉÑùƵÂÊ¡£¾ÍÊÇlength(x)/(max(x)-min(x));
N=10000; %data.txtÖеı»²âÁ¿¸öÊý£¬¼´²ÉÑù¸öÊý¡£Æäʵ¾ÍÊÇlength(y);
z=fft(y);
%ƵÆ×·ÖÎö
f=(0:N-1)*Fs/N;
Mag=2*abs(z)/N; %·ùÖµ£¬µ¥Î»Í¬±»²â±äÁ¿y
Pyy=Mag.^2; %ÄÜÁ¿£»¶ÔʵÊýϵÁÐX£¬ÓÐ X.*X=X.*conj(X)=abs(X).^2=X.^2£¬¹ÊÕâÀïÓкܶà±í´ï·½Ê½
%ÏÔʾƵÆ×ͼ(ƵÓò)
subplot(2,1,2)
plot(f(1:N/2),Pyy(1:N/2),'r') %ÏÔʾƵÆ×ͼ
% |
% ½«ÕâÀïµÄPyy¸Ä³ÉMag¾ÍÊÇ ·ùÖµ-ƵÂÊͼÁË
axis([min(f(1:N/2)) max(f(1:N/2)) 1.1*floor(min(Pyy(1:N/2))) 1.1*ceil(max(Pyy(1:N/2)))])
xlabel('ƵÂÊ (Hz)')
ylabel('ÄÜÁ¿')
title('ƵÆ×ͼ(ƵÓò)')
grid on;
%·µ»Ø×î´óÄÜÁ¿¶ÔÓ¦µÄƵÂʺÍÖÜÆÚÖµ
[a b]=max(Pyy(1:N/2));
fprintf('\n¸µÁ¢Ò¶±ä»»½á¹û£º\n')
fprintf(' FFT_f = %1.3f Hz\n',f(b)) %Êä³ö×î´óÖµ¶ÔÓ¦µÄƵÂÊ
fprintf(' FFT_T = %1.3f s\n',1/f(b)) %Êä³ö×î´óÖµ¶ÔÓ¦µÄÖÜÆÚ |
|