ABCYANPENG123 2021-06-17 19:21 采纳率: 42.9%
浏览 10

有没有人帮忙我看看这个脉冲编码调制的抽样的代码呀

function sample()

t0=10;                            %定义时间长度

ts=0.001;    fs=1/ts;

t=[-t0/2:ts:t0/2];                %定义时间序列

df=0.5;                           %定义频率分辨率

x=sin(200*t); m=x./(200*t+eps);

w=t0/(2*ts)+1;                    %确定t=0的点

m(w)=1;                           %修正t=0点的信号值

m=m.*m;

[M,mn,dfy]=fft_seq(m,ts,df);      %傅立叶变换

M=M/fs;

f=[0:dfy:dfy*length(mn)-dfy]-fs/2; %定义频率序列

figure(1)

subplot(2,1,1); plot(t,m);

xlabel('时间');ylabel('幅值');title('原始信号(fh=200/2piHz)的波形');

axis([-0.15,0.15,0,1.5]);

subplot(2,1,2);

plot(f,abs(fftshift(M)));

xlabel('频率');ylabel('幅值');

axis([-500,500,0,0.03]);title('原始信号的频谱');

t0=10;                             %信号持续的时间

ts1=0.005;                         %满足抽样条件的抽样间隔

fs1=1/ts1;

t1=[-t0/2:ts1:t0/2];               %定义满足抽样条件的时间序列

x1=sin(200*t1);  m1=x1./(200*t1+eps);  w1=t0/(2*ts1)+1;   

m1(w1)=1;                          %修正t=0时的信号值

m1=m1.*m1;                         %定义信号

[M1,mn1,df1]=fft_seq(m1,ts1,df);   %对满抽样条件的信号进行傅立叶变换

M1=M1/fs1;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];

f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1/2;

figure(2)  

subplot(2,1,1); stem(t1,m1);

xlabel('时间');ylabel('幅值');

title('抽样正常(fs=200Hz)时的信号波形');axis([-0.15,0.15,0,1]);

subplot(2,1,2)

plot(f1,abs(fftshift(N1)));

xlabel('频率');ylabel('幅值');axis([-500,500,0,0.05]);

title('抽样正常时的信号频谱');axis([-500,500,-0.01,0.03]);

t0=10;         %信号持续的时间

ts2=0.01;           %不满足抽样条件的抽样间隔

fs2=1/ts2;

t2=[-t0/2:ts2:t0/2];  %定义不满足抽样条件的时间序列

x2=sin(200*t2); m2=x2./(200*t2+eps);  w2=t0/(2*ts2)+1;  

m2(w2)=1;       %修正t=0时的信号值

m2=m2.*m2;      %定义信号

[M2,mn2,df2]=fft_seq(m2,ts2,df);%对不满足抽样条件的信号进行傅立叶变换

M2=M2/fs2;N2=[M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2];

f2=[-7*df2*length(mn2):df2:6*df2*length(mn2)-df2]-fs2/2;

figure(3)

subplot(2,1,1); stem(t2,m2);

xlabel('时间');ylabel('幅值');title('抽样失真(fs=100Hz)时的信号波形');

axis([-0.15,0.15,0,1]);subplot(2,1,2)

plot(f2,abs(fftshift(N2)));

xlabel('频率');ylabel('幅值');axis([-500,500,0,0.02]);

title('抽样失真时的信号频谱');axis([-500,500,0.005,0.02]);

function [M,m,df]=fft_seq(m,ts,df)

fs=1/ts;

if nargin==2   n1=0

else  n1=fs/df

end

n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-16 19:42
    关注

    参考GPT和自己的思路:

    这段代码是一个用于演示脉冲编码调制抽样的示例程序。具体来说,它展示了如何对一个连续时间信号进行抽样,并进行信号重建以及频谱分析。

    在该程序中,通过定义时间序列t和信号x,然后将它们转换为一个脉冲编码调制信号m。接着,程序演示了如何对该信号进行抽样,展示了正常抽样和不满足抽样条件时的信号波形和频谱。

    该程序中的fft_seq函数是用于计算信号的离散傅里叶变换的。它的功能是将信号进行补零,并计算其傅里叶变换和频率分辨率。

    总之,该程序是在MATLAB环境下进行的,并为演示脉冲编码调制抽样而编写。如果你想了解更多关于该主题的信息,可以参考相关的教材和研究论文。

    评论

报告相同问题?

悬赏问题

  • ¥15 Android Navigation: 某XDirections类不能自动生成
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)