脉冲幅度调制信号的功率谱Matlab代码

本文通过理论计算和实际模拟,探讨了PAM信号在具有矩形基脉冲和半波正弦脉冲下的功率谱特性。首先,对理论上的PAM信号进行了傅里叶变换并绘制了其功率谱密度图。接着,通过随机序列生成并分析了实际PAM信号的功率谱,展示了两种不同基带脉冲形状对信号频谱的影响。
摘要由CSDN通过智能技术生成

具体背景及实验分析点击主页专栏的相应文章。

程序1(理论PAM)

clc
clear
f=-8:0.001:8;
a=1;
T=1;

P=a*sin(pi*f*T).*exp(-1*1i*pi*f*T)./(pi*f);   %p(t)傅里叶变换
%傅里叶变换
figure(1)
plot(f,P)
% G=10*log(abs(P).^2);      %G=|P(f)|^2/T
% plot(f,G)
% axis([-8 8 -100 0])

G=((a^2)*(sin(pi*f*T)).^2)./(T*(pi*f).^2);
G=10*log(G);
figure(2)
plot(f,G)
xlabel('f*T')
ylabel('(PSD/Ep)/dB')
title('理论下具有矩形基脉冲的PAM信号功率谱')
axis([-7 7 -100 0])


G1=(a^2*T/(4*pi*pi))*(cos(pi*f*T)./(1/4-(f*T).^2)).^2;
G1=10*log(G1);
figure(3)
plot(f,G1)
xlabel('f*T')
ylabel('(PSD/Ep)/dB')
title('理论下具有半波正弦脉冲的PAM信号功率谱')
axis([-7 7 -100 0])

程序2(实际PAM)

clc
clear

%% 产生随机序列
time=1;           %提取时间周期长度
T=1024;           %提取周期数
am=1;                        %提取幅度值
Ts = 1;                     % 码元周期
N_sample =16; % 单个码元抽样点数
dt = Ts / N_sample; % 抽样时间间隔
N =T; % 码元数
t = 0 : dt : (N * N_sample - 1) * dt; % 序列传输时间
gt = ones(1, N_sample); % NRZ
RAN = round(rand(1, N)); % 随机0 1序列
se = [];
for i = 1 : N % 生成序列
   if RAN(i)==1
       se = [se gt];
   else
       se = [se -1*gt];
   end
end
y=se;%产生了随机序列
figure(1)
subplot(2,1,1)
plot(t,y)
xlabel('f/T')
ylabel('S(t)')
title('具有矩形基脉冲的PAM信号功率谱')
axis([0 T -1 1])

%% 生成功率谱
%具有矩形基脉冲的 PAM 信号
fs = 1/dt; % 采样率
[Pyy,f] = pwelch(y,hanning(N),[],[],fs,'centered');

% 绘制功率谱密度图
subplot(2,1,2)
plot(f,10*log10(Pyy))
axis([-7 7 -40 0])
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')
title('Power Spectral Density')

%具有半波正弦脉冲的 PAM 信号
y1=y.*abs(sin(pi*t));            %产生平滑调制的半波
figure(2)
subplot(2,1,1)
plot(t,y1);
xlabel('f/T')
ylabel('半波正弦脉冲S(t)')
title('半波正弦脉冲的 PAM 信号功率谱')
axis([0 T -1 1])

[Pyy,f] = pwelch(y1,hanning(N),[],[],fs,'centered');

% 绘制功率谱密度图
subplot(2,1,2)
plot(f,10*log10(Pyy))
axis([-7 7 -40 0])
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')
title('Power Spectral Density')

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3种经典功率谱估计方法的MATLABA代码-功率谱代码.doc 3种MATLAB的经典谱估计方法 希望对大家有用~ 附件所有代码: 直接法: 直接法又称周期图法,它是把随机序列x的N个观测数据视为一能量有限的序列,直接计算x的离散傅立叶变换,得X,然后再取其幅值的平方,并除以N,作为序列x真实功率谱的估计。 Matlab代码: clear; Fs=1000; %采样频率 n=0:1/Fs:1; %产生含有噪声的序列 xn=cos 3*cos randn); window=boxcar); %矩形窗 nfft=1024; [Pxx,f]=periodogram; %直接法 plot); 改进的直接法: 对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。 1. Bartlett法 Bartlett平均周期图的方法是将N点的有限长序列x分段求周期图再平均。 Matlab代码: clear; Fs=1000; n=0:1/Fs:1; xn=cos 3*cos randn); nfft=1024; window=boxcar); %矩形窗 noverlap=0; %数据无重叠 p=0.9; %置信概率 [Pxx,Pxxc]=psd; index=0:round; k=index*Fs/nfft; plot_Pxx=10*log10); plot_Pxxc=10*log10); figure plot; pause; figure plot; 2. Welch法 Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w,并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可使各段之间有重叠,这样会使方差减小。 Matlab代码: clear; Fs=1000; n=0:1/Fs:1; xn=cos 3*cos randn); nfft=1024; window=boxcar; %矩形窗 window1=hamming; %汉明窗 window2=blackman; %blackman窗 noverlap=20; %数据无重叠 range='half'; %频率间隔为[0 Fs/2],只计算一半的频率 [Pxx,f]=pwelch; [Pxx1,f]=pwelch; [Pxx2,f]=pwelch; plot_Pxx=10*log10; plot_Pxx1=10*log10; plot_Pxx2=10*log10; figure plot; pause; figure plot; pause; figure plot; 复制代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值