%在matlab平台上,开发一个信号分析系统:
%产生一个组合信号(随机和周期),并用图形表示.
Fs=1000;
t=0:1/Fs:1;
x1=5*sin(3*pi*60*t);%产生一个正玄信号
xn=x1+rand(size(t));%产生一个随机信号
figure(1);
subplot(221);
plot(t,xn);%做信号曲线图
xlabel('时间 (s)');%x轴标注
ylabel('幅度');%y轴标注
title('采样信号xn');%标题标注
grid%网格
%计算产生信号的时域统计指标.
N=size(t);
N=N(1,2);
disp('均值为:');
mean_x=mean(xn)
disp('均方值为:');
mean_x2=xn*xn'/N
disp('均方根值为:');
sqrt_x=sqrt(mean_x2)
disp('方差为:');
variance_x=var(xn)
disp('均方差为:');
sqrtvar_x=sqrt(variance_x)
disp('最大幅值为:');
max_x=max(xn)
disp('最小幅值为:');
min_x=min(xn)
%相关参数
Lag=100;
[ca,lagsa]=xcorr(xn,Lag,'unbiased');%调用自相关函数
subplot(223);
plot(lagsa/Fs,ca);
xlabel('t');
ylabel('Rx(t)');
title('自相关');%标题
grid
yn=cos(2*pi*120*t);
[cc,lagsc]=xcorr(xn,yn,Lag,'unbiased');%调用互相关函数
subplot(224);
plot(lagsc/Fs,cc,'b');
xlabel('t');
ylabel('Rxy(t)');
title('互相关');
grid
%计算功率谱,用图形表示.
NFFT=1024;
[Pxx,f]=pwelch(xn,[],30,NFFT,Fs);
subplot(222);
plot(f,10*log10(Pxx));
title('基于pwelch算法的功率谱估计');
ylabel('功率谱密度(dB)');
xlabel('频率(Hz)');
grid on;
% Discrete Fourier transform
X=fft(xn);
figure(3);
subplot(311);
plot(fftshift(abs(X)));
title('离散傅里叶变换');
xlabel('f/Hz');
ylabel('|X(k)|');
grid on;
%digital filter
h=fir1(10,0.3,hanning(11));
y=fftfilt(h,xn);
%figure(3);
subplot(312);
plot(xn(1:500));
xlabel('n');
ylabel('x(n)');
title('digital filter');
grid on;
subplot(313);
plot(y(1:500));
xlabel('n');
ylabel('y(n)');
grid on;
%加不同的窗函数,分析不同的窗函数对信号的影响.
n=1001;
figure(2);
window=hanning(n);
[Pxx_hanning,f]=pwelch(xn,window,30,NFFT,Fs);
subplot(121);
plot(f,10*log10(Pxx_hanning));
title('hanning');
ylabel('功率谱密度(dB)');
xlabel('频率(Hz)');
grid
window=hamming(n);
[Pxx_hamming,f]=pwelch(xn,window,30,NFFT,Fs);
subplot(122);
plot(f,10*log10(Pxx_hamming));
title('hamming');
ylabel('功率谱密度(dB)');
xlabel('频率(Hz)');
grid