添加白噪声m文件:
function [Y,NOISE] = noisegen(X,SNR)
% 噪声在信号中加入高斯白噪声。
% [Y, NOISE] = NOISEGEN(X,SNR) 将高斯白噪声加到X上,信噪比以分贝为单位。
NOISE=randn(size(X));
NOISE=NOISE-mean(NOISE);
signal_power = 1/length(X)*sum(X.*X);
noise_variance = signal_power / ( 10^(SNR/10) );
NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;
Y=X+NOISE;
主程序代码:
den=[1 3 2 1.5];
num=[1.5];
sys=tf(num,den); %建立欠阻尼闭环传递系统模型
t=-1:0.01:20; %设置系统响应时间和产生信号的长度
t0=0;
ut=stepfun(t,t0); %产生单位阶跃信号
X=ut;
snr=0.8; %信噪比设定为0.8
y=noisegen(X,snr); %引用添加噪声m文件
figure(2)
step(sys,t);grid %绘制系统单位阶跃响应
figure(3)
lsim(sys,y,t,0);grid %绘制系统噪声响应
评论0