📄 随机试验matlab程序(我的).m
字号:
clear all;close all;
N=4096;%采样点个数
Fs=44100;%采样频率/Hz
f=1000;%信号源频率/Hz
%M=fix(Fs/f);
n=1:1:N;
t=n/Fs;
zz=1:1:2*N-1;
tq=zz/Fs;
%原始信号
%原始信号波形
signal=30*wavrecord(N,Fs,1,'double');
figure(1);subplot(311);
plot(t,signal);
axis([0,0.02,-10,10]);
title('原始信号')
xlabel('signal(t) /s');
grid;
%原始信号频谱
signalfft=fftshift(fft(signal,N));%对原始信号进行傅里叶变换
k=-(N-1)/2:(N-1)/2;
T=N/Fs;%采样总时间
f1=k/T;%采样点的频率
subplot(312);
plot(f1,abs(signalfft));axis([-N,N,0,3*10^4]);
xlabel('原始信号频谱 signalfft(f) /Hz');
%原始信号自相关函数
[C0,LAGS0] = xcorr(signal,'unbiased');
subplot(313);
plot(LAGS0/Fs,C0);
axis([0,0.02,-100,100]);
xlabel('自相关函数 t /s');ylabel('Rsignal(t)');
grid;
fprintf('原始信号的均值为:');
signal_average = mean(signal)
fprintf('原始信号的方差为:');
signal_var = var(signal)
fprintf('原始信号的平均功率为:');
signal_Power_average=sum(abs(signal).^2)/length(signal)
%合成信号
Nsignal=awgn(signal,-10);%将原始信号加上高斯白噪声
%合成信号波形
figure(2);subplot(311);
plot(t,Nsignal);
axis([0,0.02,-10,10]);
title('合成信号')
xlabel('Nsignal(t) /s');
grid;
%合成信号频谱
Nsignalfft=fftshift(fft(Nsignal,N));%对合成信号进行傅里叶变换
k=-(N-1)/2:(N-1)/2;
T=N/Fs;%采样总时间
f1=k/T;%采样点的频率
subplot(312);
plot(f1,abs(Nsignalfft));axis([-N,N,0,3*10^4]);
xlabel('合成信号频谱 Nsignalfft(f) /Hz');
%合成信号自相关函数
[C1,LAGS1] = xcorr(Nsignal,'unbiased');
subplot(313);
plot(LAGS1/Fs,C1);
axis([0,0.02,-100,100]);
xlabel('自相关函数 t /s');ylabel('Rnsignal(t)');
grid;
fprintf('合成信号的均值为:');
Nsignal_average = mean(Nsignal)
fprintf('合成信号的方差为:');
Nsignal_var = var(Nsignal)
fprintf('合成信号的平均功率为:');
Nsignal_Power_average=sum(abs(Nsignal).^2)/length(Nsignal)
%提取后的信号
%提取后的信号波形
MAX=max(sqrtt(C1*2));%由合成信号自相关函数得到原信号的幅度
Newsignal=C1*2/MAX;
figure(3);subplot(311);
plot(tq,Newsignal);
axis([0,0.02,-10,10]);
title('提取后的信号')
xlabel('Newsignal(t) /s');
grid;
%提取后的信号频谱
Nsignalfft=fftshift(fft(Nsignal,N));
k=-(N-1)/2:(N-1)/2;
T=N/Fs;%采样总时间
f1=k/T;%采样点的频率
subplot(312);
plot(f1,abs(Nsignalfft));axis([-N,N,0,3*10^4]);
xlabel('提取后的信号频谱 Newsignalfft(f) /Hz');
%提取后的信号自相关函数
[C3,LAGS3] = xcorr(Newsignal,'unbiased');
subplot(313);
plot(LAGS3/Fs,C3);
axis([0,0.02,-100,100]);
xlabel('自相关函数 t /s');ylabel('Rnewsignal(t)');
grid;
fprintf('提取后的信号的均值为:');
Newsignal_average = mean(Newsignal)
fprintf('提取后的信号的方差为:');
Newsignal_var = var(Newsignal)
fprintf('提取后的信号的平均功率为:');
Newsignal_Power_average=sum(abs(Newsignal).^2)/length(Newsignal)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -