📄 am.m
字号:
echo on
tz=0.001; %定义抽样时间
snr=10; %定义信噪比,同db表示
fz=1/tz;
df=0.2; %频率分辨力
snr_lin=10^(snr/10); %信噪比的数值
t0=0.5; %定义t0信号的持续时间的值
fa=50; %定义载波频率
a=0.8; %定义调制系数
t=[0:tz:t0]; %定义抽样点数据
%定义信号m
m=zeros(1,501);
for i=1:1:125, m(i)=i; end
for i=126:1:375, m(i)=-i+250; end
for i=376:1:501, m(i)=i-500; end
m=m/1000
c=cos(2*pi*fa*t); %载波信号
m_n=m/max(abs(m));
[M,m,df1]=fftseq(m,tz,df); %傅里叶变换,ffse程序段见后
M=M/fz; %频率缩放,便于作图
f=[0:df1:df1*(length(m)-1)]-fz/2; %定义频率向量
u=(1+a*m_n).*c; %将调制信号调制在载波上
[U,u,df1]=fftseq(u,tz,df);%对已调信号作傅里叶变换
U=U/fz;%频率缩放
signal_power=ampower(u(1:length(t)));%计算信号的功率,函数ampower
%程序段见后
pmn=ampower(m(1:length(t)))/(max(abs(m)))^2;%计算调制信号的功率
eta=(a^2*pmn)/(1+a^2*pmn); %计算调制效率
noise_power=eta*signal_power/snr_lin;%计算噪声功率
noise_std=sqrt(noise_power);%噪声标准差
noise=noise_std*randn(1,length(u));%产生高斯分布的噪声
r=u+noise;%总接收信号
[R,r,df1]=fftseq (r,tz,df);%对总信号进行傅里叶变换
R=R/fz;%频率缩放
%以下为显示结果
pause %pause使向程序暂停,用户按任意键后继续执行
signal_power %显示信号功率
pause
eta %显示调制效率
pause
subplot(2,2,1)
plot(t, m(1:length(t))) %作出调制信号曲线
axis([0 0.5 -0.25 0.25]); xlabel('Time')
title('The message signal'); pause
subplot(2,2,2)
plot(t, u(1:length(t))) %作出已调制信号的曲线
axis([0 0.5 -2.1 2.1]); xlabel('Time')
title('The modulated signal'); pause
subplot(2,2,3)
plot(t, c(1:length(t))) %作出载波曲线
axis([0 0.5 -2.1 2.1]); xlabel('Time')
title('The carrier'); pause
subplot(2,1,1)
plot(f, abs(fftshift(M))) %作出频域的调制信号
xlabel('Frequency'); title('Spectrum of the message signal')
pause; subplot(2,1,2)
plot(f,abs(fftshift(U))) %作出频域的已调制信号
title('noise sample'); xlabel('Frequency')
pause; subplot(2,1,1)
plot(t,noise(1:length(t))) %作出噪声曲线
title('noise samle'); xlabel('Time')
pause; subplot(2,1,2)
plot(t, r(1:length(t))) %作出总信号的时域曲线
title('Signal and noise'); xlabel('Time')
pause; subplot(2,1,2)
plot(f, abs(fftshift(R))) %作出频域的总信号曲线
title('Signal and niose spectrum');xlabel('Frequency')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -