使用FFT生成基本信号——方波和功率谱密度

可怜的低于平均水平平均很好杰出的(22平均票数:2.73(共5个)

有大量文本可用于解释离散傅里叶变换的基础知识及其非常有效的实现——快速傅里叶转换(FFT)。我们经常需要生成简单的标准信号(正弦、余弦高斯脉冲方波隔离矩形脉冲指数衰减线性调频信号)用于模拟目的。我打算(在一系列文章中)展示如何在Matlab中生成这些基本信号,以及如何使用FFT在频域中表示它们。

这篇文章是这本书的一部分使用Matlab的数字调制:从头开始构建仿真模型,ISBN:978-1521493885,电子书(PDF)格式(点击此处)纸质(硬拷贝)格式(单击此处)
Matlab中的无线通信系统,ISBN:978-1720114352,提供电子书(PDF)格式(单击此处)纸质(硬拷贝)格式(单击此处).

方波的意义

通过通信信道传输信息的最合理方式是通过方波脉冲流——一种独特的脉冲0'和另一个'1‘. 数字信号以图形方式表示为具有特定符号/位周期的方波。方波也广泛用于开关电路中,如同步数字电路各个块的时钟信号,以及给定系统域的基准时钟等。

方波在频域中表现为广泛的谐波,因此可以引起电磁干扰。方波是周期波,展开为傅里叶级数时包含奇次谐波(其中,像锯片和其他实词信号这样的信号包含所有整数频率的谐波)。由于方波在频域中逐字扩展为无穷多个奇次谐波项,所以方波的近似是另一个有趣的领域。用于近似方波的傅里叶级数展开的项数通常被视为吉布斯现象在时域中表现为方波转角处的振铃效应(此处为视觉解释).

真方波是一类特殊的矩形波50%占空比。改变矩形波的占空比会导致脉宽调制,其中信息通过改变每个传输矩形波的占据空比来传输。

如何在Matlab中生成方波

如果你知道在Matlab中生成正弦波,任务非常简单。方波是使用Matlab中的“平方”函数生成的。命令sytax–平方(t,dutyCycle)–产生具有周期的方波2 \pi对于给定的时基。该命令的行为类似于“”命令(用于生成正弦波),但在这种情况下,它生成的是方波而不是正弦波。论点——dutyCycle(负载循环)是可选的,它定义了所需的方波占空比。默认情况下(当dutyCycle(负载循环)参数未提供)方波以(50%)占空比生成。

f=10;%正弦波频率(Hz)过采样率=30;%过采样率fs=过采样率*f;%采样频率duty_cycle=50;%占空比为50%的方波(默认)nCyl=5;%生成五个正弦波周期t=0:1/fs:nCyl*1/f;%时间基准x=平方(2*pi*f*t,duty_cycle);%产生方波图(t,x,‘k’);标题([‘方波f=',num2str(f),‘Hz’]);xlabel(“时间”);ylabel(“振幅”);
方波时域如何在Matlab中绘制方波

使用FFT的功率谱密度

让我们看看生成的方波在频域中的外观。这里使用了快速傅里叶变换(FFT)。正如本文中所讨论的,有许多方法可以绘制FFT的响应。首先绘制单面功率谱密度,然后绘制双面功率谱密度。

单面功率谱密度

X=fft(X,NFFT);X=X(1:NFFT/2+1);%NFFT/2后抛出样本进行单面打印Pxx=X.*conj(X)/(NFFT*L);f=fs*(0:NFFT/2)/NFFT;%频率矢量图(f,10*log10(Pxx),‘r’);标题(“单面功率谱密度”);xlabel(“频率(Hz)”)ylabel(“功率谱密度-P_{xx}dB/Hz”);ylim([-45-5])
方波单面功率谱密度PSD

双面功率谱密度

L=长度(x);NFFT=1024;X=fftshift(fft(X,NFFT));Pxx=X.*conj(X)/(NFFT*L);%具有适当缩放的计算能力f=fs*(-NFFT/2:NFFT/2-1)/NFFT;%频率矢量图(f,10*log10(Pxx),‘r’);标题(“双面功率谱密度”);xlabel(“频率(Hz)”)ylabel(“功率谱密度-P_{xx}dB/Hz”);
方波双面功率谱密度PSD
可怜的低于平均水平平均很好杰出的(22平均票数:2.73(共5个)

本章主题

信号处理要点
生成标准测试信号
 □正弦信号
 □方波
 □矩形脉冲
 □高斯脉冲
 □Chirp信号
解释FFT结果-复杂DFT、频率箱和FFTShift
 □实际和复杂DFT
 □快速傅里叶变换(FFT)
 □解释FFT结果
 □FFT换档
 □IFFTShift(IFFT换档)
从FFT获取幅度和相位信息
 □离散时间域表示
 □用FFT在频域中表示信号
 □从频域样本重构时域信号
功率谱密度
信号的功率和能量
 □信号的能量
 □信号的功率
 □信号分类
 □信号功率的计算-仿真和验证
多项式、卷积和Toeplitz矩阵
 □多项式函数
 □表示单变量多项式函数
 □多项式乘法与线性卷积
 □Toeplitz矩阵与卷积
计算卷积的方法
 □方法1:Brute-force方法
 □方法2:使用Toeplitz矩阵
 □方法3:使用FFT计算卷积
 □其他方法
解析信号及其应用
 □解析信号与傅里叶变换
 □提取瞬时振幅、相位、频率
 □利用希尔伯特变换进行相位解调
选择滤波器:FIR或IIR:理解设计观点
 □设计说明书
 □设计中的一般考虑因素

作者的书籍

Matlab中的无线通信系统
Matlab中的无线通信系统
第二版(PDF)

可怜的低于平均水平平均很好杰出的(179平均票数:3.62(共5个)

使用Python的数字调制
使用Python的数字调制
(PDF电子书)

可怜的低于平均水平平均很好杰出的(133平均票数:3.56(共5个)

数字模块使用matlab图书封面
使用Matlab的数字调制
(PDF电子书)

可怜的低于平均水平平均很好杰出的(135平均票数:3.63(共5个)

手绘通信工程最佳书籍
信号处理最佳书籍

关于“使用FFT生成基本信号-方波和功率谱密度”的5点思考

  1. 在我看来,平方函数确实有一个严重的问题。即使使用相干采样,PSD也会显示出很多不应该存在的失真。在时域中,这可以通过使用stem命令而不是plot看到。尽管对fs/f0使用整数,例如8,但正半波和负半波的离散点不是4乘4。不幸的是,这些有时在4/4到5/3或3/5之间变化,从而产生额外的噪声(抖动)。
    顺便说一下:FFT…快速傅里叶变换。在psd部分的开头有一个输入错误。

    答复

发表您的宝贵意见!!!