第六章 利用Matlab对信号进行频域分析
「信号的频域分析及MATLAB实现」
「信号的频域分析及MATLAB实现」信号是以时间为自变量的函数,因此,我们可以通过对信号进行时间域分析来了解其在时间上的行为。
然而,信号也可以通过频域分析来揭示其在频率上的特性。
频域分析是指将信号从时间域转换到频率域的过程,可以帮助我们理解信号中包含的频率成分以及它们在信号中的占比。
频域分析有多种方法,其中最常用的是傅里叶变换。
傅里叶变换将信号分解为一系列的正弦和余弦函数(即频率成分),每个正弦和余弦函数都有不同的频率和振幅。
这些频率成分的振幅表示了信号中该频率的强度。
MATLAB是一种常用的科学计算和数据可视化软件,它提供了许多函数和工具箱来进行信号处理和频域分析。
下面我们将介绍如何使用MATLAB实现信号的频域分析。
首先,我们需要导入信号数据到MATLAB中。
假设我们有一个1000点的时间序列信号,我们可以将其存储为一个向量。
```matlabt=0:0.01:9.99;%时间序列x = sin(2*pi*1*t) + sin(2*pi*2*t) + sin(2*pi*5*t); % 信号数据```接下来,我们可以使用MATLAB的傅里叶变换函数fft来计算信号的频域表示。
频域表示是一个复数向量,其中包含了信号的频率成分和振幅。
```matlabX = fft(x); % 计算信号的频域表示```根据傅里叶变换的性质,我们可以使用MATLAB的fftshift函数将频域表示转换为以零频率为中心的频谱图。
```matlabX_shifted = fftshift(X); % 将频域表示进行平移```为了可视化频谱图,我们可以使用MATLAB的plot函数绘制频率和振幅之间的关系。
```matlabN = length(X_shifted); % 频域表示的长度f=(-N/2:N/2-1)/(N*0.01);%频率向量plot(f, abs(X_shifted)); % 绘制频谱图```通过上述步骤,我们可以实现信号的频域分析,并通过频谱图来了解信号的频率成分和它们在信号中的贡献。
matlab信号频域分析实验报告
matlab信号频域分析实验报告Matlab信号频域分析实验报告引言:信号频域分析是一种重要的信号处理技术,通过将信号从时域转换到频域,可以更好地理解信号的频率特性和频谱分布。
本实验旨在利用Matlab软件进行信号频域分析,探索信号的频域特性,并通过实验结果验证频域分析的有效性。
一、实验目的本实验的主要目的是通过Matlab软件进行信号频域分析,了解信号的频域特性和频谱分布,验证频域分析的有效性。
二、实验原理信号频域分析是将信号从时域转换到频域的过程,常用的频域分析方法有傅里叶变换和功率谱估计等。
傅里叶变换可以将信号分解为不同频率的正弦和余弦分量,从而得到信号的频谱分布。
功率谱估计则可以估计信号在不同频率上的功率。
三、实验步骤1. 生成信号:首先,使用Matlab生成一个包含多个频率分量的复合信号。
可以选择正弦信号、方波信号或者其他复杂信号。
2. 时域分析:利用Matlab的时域分析函数,如plot()和stem(),绘制信号的时域波形图。
观察信号的振幅、周期和波形特征。
3. 频域分析:使用Matlab的傅里叶变换函数fft(),将信号从时域转换到频域。
然后,利用Matlab的频域分析函数,如plot()和stem(),绘制信号的频域谱图。
观察信号的频率分量和频谱分布。
4. 功率谱估计:使用Matlab的功率谱估计函数,如pwelch()或periodogram(),估计信号在不同频率上的功率。
绘制功率谱图,观察信号的功率分布。
四、实验结果与分析通过实验,我们生成了一个包含多个频率分量的复合信号,并进行了时域分析和频域分析。
实验结果显示,信号的时域波形图反映了信号的振幅、周期和波形特征,而频域谱图则展示了信号的频率分量和频谱分布。
在时域波形图中,我们可以观察到信号的振幅和周期。
不同频率分量的信号在时域波形图中呈现出不同的振幅和周期,从而反映了信号的频率特性。
在频域谱图中,我们可以观察到信号的频率分量和频谱分布。
基于Matlab对信号进行频域分析的方法
基于Matlab对信号进行频域分析的方法Matlab可以说是一个非常有用且功能齐全的工具,在通信、自控、金融等方面有广泛的应用。
本文讨论使用Matlab对信号进行频域分析的方法。
说到频域,不可避免的会提到傅里叶变换,傅里叶变换提供了一个将信号从时域转变到频域的方法。
之所以要有信号的频域分析,是因为很多信号在时域不明显的特征可以在频域下得到很好的展现,可以更加容易的进行分析和处理。
FFTMatlab提供的傅里叶变换的函数是FFT,中文名叫做快速傅里叶变换。
快速傅里叶变换的提出是伟大的,使得处理器处理数字信号的能力大大提升,也使我们生活向数字化迈了一大步。
接下来就谈谈如何使用这个函数。
fft使用很简单,但是一般信号都有x和y两个向量,而fft只会处理y向量,所以想让频域分析变得有意义,那么就需要用户自己处理x向量一个简单的例子从一个简单正弦信号开始吧,正弦信号定义为:我们现在通过以下代码在Matlab中画出这个正弦曲线fo = 4; %frequency of the sine waveFs = 100; %sampling rateTs = 1/Fs; %sampling time intervalt = 0:Ts:1-Ts; %sampling periodn = length(t); %number of samplesy = 2*sin(2*pi*fo*t); %the sine curve%plot the cosine curve in the TIme domainsinePlot = figure;plot(t,y)xlabel(‘TIme (seconds)’)ylabel(‘y(t)’)TItle(‘Sample Sine Wave’)grid这就是我们得到的:当我们对这条曲线fft时,我们希望在频域得到以下频谱(基于傅里叶变换理论,我们希望看见一个幅值为1的峰值在-4Hz处,另一个在+4Hz处)使用FFT命令我们知道目标是什么了,那么现在使用Matlab的内建的FFT函数来重新生成频谱%plot the frequency spectrum using the MATLAB fft commandmatlabFFT = figure; %create a new figureYfreqDomain = fft(y); %take the fft of our sin wave,y (t)stem(abs(YfreqDomain)); %use abs command to get the magnitude%similary,we would use angle command to get the phase plot!%we‘ll discuss phase in another post though!xlabel(’Sample Number‘)ylabel(’Amplitude‘)TItle(’Using the Matlab fft command‘)gridaxis([0,100,0,120])效果如下:但是注意一下,这并不是我们真正想要的,有一些信息是缺失的x轴本来应该给我们提供频率信息,但是你能读出频率吗?幅度都是100没有让频谱中心为为FFT定义一个函数来获取双边频谱以下代码可以简化获取双边频谱的过程,复制并保存到你的.m文件中function [X,freq]=centeredFFT(x,Fs)%this is a custom function that helps in plotting the two-sided spectrum%x is the signal that is to be transformed%Fs is the sampling rateN=length(x);%this part of the code generates that frequency axisif mod(N,2)==0k=-N/2:N/2-1; % N evenelsek=-(N-1)/2:(N-1)/2; % N oddendT=N/Fs;freq=k/T; %the frequency axis%takes the fft of the signal,and adjusts the amplitude accordinglyX=fft(x)/N; % normalize the dataX=fftshift(X); %shifts the fft data so that it is centered这个函数输出正确的频域范围和变换后的信号,它需要输入需要变换的信号和采样率。
应用MATLAB对信号进行频谱分析
应用MATLAB对信号进行频谱分析信号的频谱分析是一种重要的信号处理方法,可以帮助我们深入了解信号的频域特性。
MATLAB作为一种强大的科学计算软件,提供了丰富的工具和函数来进行频谱分析。
在MATLAB中,频谱分析可以使用多种方法来实现,包括离散傅立叶变换(DFT)、快速傅立叶变换(FFT)等。
下面将介绍几种常用的频谱分析方法及其在MATLAB中的应用。
1.离散傅立叶变换(DFT)离散傅立叶变换是将信号从时域转换到频域的一种方法。
在MATLAB 中,可以使用fft函数进行离散傅立叶变换。
例如,假设我们有一个长度为N的信号x,可以通过以下代码进行频谱分析:```matlabN = length(x);X = fft(x);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```以上代码将信号x进行离散傅立叶变换,并计算频谱的幅度谱(P),然后根据采样频率和信号长度计算频率轴。
最后使用plot函数绘制频谱图。
2.快速傅立叶变换(FFT)快速傅立叶变换是一种高效的离散傅立叶变换算法,可以在较短的时间内计算出频谱。
在MATLAB中,fft函数实际上就是使用了快速傅立叶变换算法。
以下是使用FFT进行频谱分析的示例代码:```matlabN = length(x);X = fft(x);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```3.窗函数窗函数可以改善频谱分析的效果,常见的窗函数有矩形窗、汉宁窗、汉明窗等。
在MATLAB中,可以使用window函数生成窗函数,然后将窗函数和信号进行乘积运算,再进行频谱分析。
以下是使用汉宁窗进行频谱分析的示例代码:```matlabN = length(x);window = hann(N);xw = x.*window';X = fft(xw);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```以上代码通过生成一个汉宁窗,并将窗函数与信号进行乘积运算得到xw,然后将xw进行频谱分析。
第六章 利用Matlab对信号进行频域分析
练习 1连续求以下信号的DTFS的系数 连续求以下信号的DTFS的系数
x[n] = cos(nπ / 30) + 2sin(nπ / 90)
2已知一个信号在一个周期内的DTFS系数由下式给 已知一个信号在一个周期内的DTFS系数由下式给 出X[k]=(1/2)k,假设N=10,求出时域信号x[n]. 假设N=10,求出时域信号x[n].
Example T0=1;N=19;T=T0/N; t=0:T:T0; x=cos(2*pi*5*t)+2*sin(2*pi*9*t); Xm=fft(x,N)/N; f=(-(N-1)/2:(N-1)/2)/N/T;%% f=(-(N-1)/2:(Nfigure; stem(t,xlabel('f(Hz)');ylabel('Magnitude');title('幅度谱'); xlabel('f(Hz)');ylabel('Magnitude');title('幅度谱');
例题2 例题2 π π 7π x[n] = cos( n + ) + 0.5cos( n) 已知一个周期序列, 8 3 8 利用FFT计算它的离散时间傅里叶级数 利用FFT计算它的离散时间傅里叶级数 理论计算可得
7π x[n] = cos( n + ) + 0.5cos( n) 8 3 8 = e
∞
∫
相比离散时间非周期信号的DTFT分析方法,连续非周期信号的 相比离散时间非周期信号的DTFT分析方法,连续非周期信号的 DFT分析方法增加了时域抽样环节.如果不满足抽样定理,会出 DFT分析方法增加了时域抽样环节.如果不满足抽样定理,会出 现混叠误差.如果信号在时域加窗截断过程中,窗口宽度(截断 长度)或窗口类型不合适,则会产生较大的频率泄露而影响频谱 分辨率.因此确定抽样间隔T和相应的截断长度是决定DTFT能否 分辨率.因此确定抽样间隔T和相应的截断长度是决定DTFT能否 正确分析信号频谱的关键.
应用MATLAB对信号进行频谱分析及滤波
应用MATLAB对信号进行频谱分析及滤波频谱分析和滤波是信号处理中常用的技术,可以帮助我们了解信号的频率特性并对信号进行去噪或增强。
MATLAB是一个强大的数学计算和工程仿真软件,提供了各种工具和函数用于频谱分析和滤波。
频谱分析是通过将信号在频域上进行分解来研究信号的频率特性。
MATLAB提供了几种进行频谱分析的函数,包括FFT(快速傅里叶变换)、periodogram和spectrogram等。
下面将以FFT为例,介绍如何使用MATLAB进行频谱分析。
首先,我们需要先生成一个信号用于频谱分析。
可以使用MATLAB提供的随机信号生成函数来生成一个特定频率和幅度的信号。
例如,可以使用以下代码生成一个包含两个频率成分的信号:```MATLABFs=1000;%采样率t=0:1/Fs:1;%时间向量,从0秒到1秒,采样率为Fsf1=10;%第一个频率成分f2=50;%第二个频率成分A1=1;%第一个频率成分的幅度A2=0.5;%第二个频率成分的幅度x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);```上述代码生成了一个采样率为1000Hz的信号,包含10Hz和50Hz两个频率的成分。
接下来,我们可以使用MATLAB的FFT函数对信号进行频谱分析,并将频谱绘制出来。
FFT函数将信号从时域转换到频域,并返回频谱幅度和频率信息。
以下是使用FFT函数对上述生成的信号进行频谱分析的代码:```MATLABN = length(x); % 信号长度X = abs(fft(x))/N; % 计算FFTf=(0:N-1)*(Fs/N);%计算频率坐标plot(f,X)xlabel('频率(Hz)')ylabel('幅度')title('信号频谱')```上述代码中,我们首先计算FFT并将结果除以信号长度,以得到正确的幅度值。
然后,我们计算频率坐标,并将频谱幅度与频率绘制出来。
matlab频域分析实验报告
Matlab频域分析实验报告引言频域分析是一种常用的信号处理技术,可以帮助我们理解信号的频率特性和频率成分。
在本实验中,我们将使用Matlab进行频域分析,并通过实际的信号示例来说明其应用。
实验目标本实验的目标是通过Matlab进行频域分析,了解信号的频率特性,并能够对信号进行频域滤波、谱估计和频域增强。
实验步骤步骤一:加载信号数据首先,我们需要加载信号数据。
在Matlab中,我们可以使用load()函数来加载数据文件。
假设我们的信号数据文件名为signal.mat,则可以使用以下代码进行加载:load('signal.mat');步骤二:绘制时域波形图加载信号数据后,我们可以通过绘制时域波形图来观察信号的时域特性。
可以使用plot()函数来绘制信号的时域波形图。
以下是示例代码:plot(signal);xlabel('时间');ylabel('信号幅度');title('信号的时域波形图');步骤三:进行傅里叶变换为了将信号转换到频域,我们需要进行傅里叶变换。
在Matlab中,可以使用fft()函数对信号进行傅里叶变换。
以下是示例代码:signal_freq = fft(signal);步骤四:绘制频域幅度谱进行傅里叶变换后,我们可以绘制信号的频域幅度谱来观察信号的频率特性。
可以使用abs()函数来计算频域幅度,并使用plot()函数来绘制频域幅度谱图。
以下是示例代码:signal_freq_amp = abs(signal_freq);plot(signal_freq_amp);xlabel('频率');ylabel('幅度');title('信号的频域幅度谱');步骤五:频域滤波频域分析不仅可以帮助我们观察信号的频率特性,还可以进行频域滤波。
例如,我们可以通过在频域中将低幅度的频率成分设置为0来实现低通滤波。
如何在Matlab中进行信号频谱分析
如何在Matlab中进行信号频谱分析一、引言信号频谱分析是一种重要的信号处理技术,它可以帮助我们理解信号的频率特性和频谱分布。
在Matlab中,有多种方法可以用来进行信号频谱分析,本文将介绍其中几种常用的方法。
二、时域分析1. 快速傅里叶变换(FFT)快速傅里叶变换(FFT)是最常用的频谱分析工具之一。
在Matlab中,可以使用fft函数对信号进行FFT分析。
首先,将信号数据传入fft函数,然后对结果进行处理,得到信号的频谱图。
通过分析频谱图,我们可以了解信号的频率成分和频谱分布。
2. 窗函数窗函数可以帮助我们减小信号分析过程中的泄漏效应。
在Matlab中,可以使用hamming、hanning等函数生成窗函数。
通过将窗函数乘以信号数据,可以减小频谱中的泄漏效应,得到更准确的频谱图。
三、频域分析1. 功率谱密度(PSD)估计功率谱密度(PSD)估计是一种常见的频域分析方法,用来估计信号在不同频率上的功率分布。
在Matlab中,可以使用pwelch函数进行PSD估计。
pwelch函数需要输入信号数据和采样频率,然后输出信号的功率谱密度图。
2. 自相关函数自相关函数可以帮助我们了解信号的周期性。
在Matlab中,可以使用xcorr函数计算信号的自相关函数。
xcorr函数需要输入信号数据,然后输出信号的自相关函数图。
四、频谱图绘制与分析在进行信号频谱分析后,我们需要将分析结果进行可视化。
在Matlab中,可以使用plot函数绘制频谱图。
通过观察频谱图,我们可以进一步分析信号的频率成分和频谱特性。
可以注意以下几点:1. 频谱图的横轴表示频率,纵轴表示幅度。
通过观察频谱图的峰值位置和幅度大小,可以了解信号中频率成分的分布情况。
2. 根据信号的特点,选择合适的分析方法和参数。
不同的信号可能需要采用不同的分析方法和参数,才能得到准确的频谱分布。
五、实例分析为了更好地理解如何在Matlab中进行信号频谱分析,以下是一个简单的实例分析。
matlab信号频域分析实验报告
matlab信号频域分析实验报告《Matlab信号频域分析实验报告》摘要:本实验通过Matlab软件对信号进行频域分析,探究信号在频域中的特性。
首先,我们使用Matlab生成了不同频率和幅度的正弦信号,并对其进行了傅里叶变换。
然后,我们利用频谱分析工具对信号进行了频谱分析,观察了信号在频域中的频率成分和能量分布。
最后,我们对信号进行了滤波处理,观察了滤波后信号在频域中的变化。
引言:信号的频域分析是数字信号处理中的重要内容,通过频域分析可以了解信号的频率成分和能量分布情况,对信号的特性有着重要的指导意义。
Matlab作为一种强大的数学计算软件,提供了丰富的信号处理工具,能够方便快捷地进行信号的频域分析。
本实验旨在通过Matlab软件进行信号频域分析,探究信号在频域中的特性。
实验过程:1. 生成不同频率和幅度的正弦信号首先,我们使用Matlab生成了不同频率和幅度的正弦信号,分别代表不同的信号特性。
通过绘制时域波形图,我们可以直观地观察到信号的波形特点。
2. 进行傅里叶变换接下来,我们对生成的正弦信号进行了傅里叶变换,得到了信号在频域中的频率成分和能量分布情况。
通过绘制频谱图,我们可以清晰地观察到信号的频率成分和能量分布情况。
3. 频谱分析利用Matlab提供的频谱分析工具,我们对信号进行了频谱分析,进一步观察了信号在频域中的特性。
通过频谱分析,我们可以了解信号的频率成分和能量分布情况,为后续的信号处理提供了重要参考。
4. 滤波处理最后,我们对信号进行了滤波处理,观察了滤波后信号在频域中的变化。
通过比较滤波前后的频谱图,我们可以了解滤波对信号频域特性的影响,进一步认识信号在频域中的变化情况。
实验结论:通过本次实验,我们对信号在频域中的特性有了更深入的了解。
通过Matlab软件进行信号频域分析,我们可以清晰地观察到信号的频率成分和能量分布情况,为信号处理和分析提供了重要参考。
同时,我们也了解到了滤波对信号在频域中的影响,为信号处理提供了重要指导。
在MATLAB中使用频域方法进行信号分析
在MATLAB中使用频域方法进行信号分析信号分析是一种用于探索信号特征、提取有用信息以及解决实际问题的方法。
在信号分析中,频域方法是一种常用且有效的工具。
频域方法通过将信号从时域转换为频域,可以更好地理解信号的频率特征和谱密度。
MATLAB是一款功能强大的数学计算和数据分析软件,在信号处理领域广泛应用。
通过其丰富的函数库和强大的计算能力,我们可以使用多种频域方法进行信号分析。
本文将介绍一些MATLAB中常用的频域方法,并展示如何使用这些方法进行信号分析。
第一部分:频域变换频域变换是将时域信号转换为频域信号的过程。
在MATLAB中,常用的频域变换方法包括傅里叶变换、快速傅里叶变换等。
下面我们将详细介绍这些方法的原理和使用。
1. 傅里叶变换傅里叶变换是频域分析的基础。
它将信号表示为一组正弦和余弦波的和,可以将信号的时域特征转化为频域特征。
在MATLAB中,可以使用fft函数进行傅里叶变换。
例如,我们有一段包含正弦信号的时域数据,可以使用fft函数计算其频域表示。
代码如下:```MATLABt = 0:0.01:1; % 时间范围f = 10; % 信号频率x = sin(2*pi*f*t);X = fft(x);```通过上述代码,我们可以得到信号x的频谱表示X。
可以使用plot函数绘制频谱图,代码如下:```MATLABf = (0:length(X)-1)/length(X)*Fs; % 频率范围plot(f, abs(X))```上述代码中,我们计算了频率范围f,并使用abs函数计算频域信号的模。
绘制得到的图形可以直观地显示信号的频率成分。
2. 快速傅里叶变换(FFT)傅里叶变换是一种高效的频域变换方法,但是当信号长度较大时,计算复杂度较高。
为了解决这个问题,快速傅里叶变换(FFT)被广泛应用。
FFT算法通过分治策略将傅里叶变换的复杂度从O(n^2)降低到O(nlogn),大大提高了计算效率。
matlab 信号频谱分析实验报告
matlab 信号频谱分析实验报告《Matlab 信号频谱分析实验报告》摘要:本实验利用Matlab软件对信号进行频谱分析,通过对信号的频谱特性进行研究,探讨了信号频谱分析的基本原理和方法。
实验结果表明,Matlab软件可以有效地对信号进行频谱分析,并能够准确地显示信号的频谱特性,为信号处理和分析提供了有力的工具。
1. 引言信号频谱分析是信号处理领域中的重要内容之一,它可以帮助人们了解信号的频率成分和频谱特性,对信号的特征进行深入分析。
Matlab作为一种强大的科学计算软件,能够提供丰富的信号处理工具和函数,可以方便地进行信号频谱分析。
本实验旨在利用Matlab软件对信号进行频谱分析,探讨信号频谱分析的基本原理和方法,并通过实验验证Matlab软件在信号频谱分析中的有效性和可靠性。
2. 实验原理信号的频谱分析是指将信号在频域上进行分析,得到信号的频率成分和频谱特性。
信号的频谱分析可以通过傅里叶变换来实现,傅里叶变换能够将信号从时域转换到频域,得到信号的频谱信息。
在Matlab中,可以利用fft函数来进行信号的傅里叶变换,得到信号的频谱信息,并通过plot函数将频谱信息可视化显示出来。
3. 实验过程(1)生成信号:首先在Matlab中生成一个测试信号,可以是正弦信号、方波信号或其他类型的信号。
(2)进行频谱分析:利用fft函数对生成的信号进行傅里叶变换,得到信号的频谱信息。
(3)频谱可视化:利用plot函数将信号的频谱信息可视化显示出来,观察信号的频谱特性。
4. 实验结果通过对不同类型的信号进行频谱分析实验,得到了它们在频域上的频谱特性。
通过对频谱的观察和分析,可以清晰地看到信号的频率成分和频谱分布情况,从而了解信号的频谱特性。
5. 结论本实验利用Matlab软件对信号进行频谱分析,通过对信号的频谱特性进行研究,探讨了信号频谱分析的基本原理和方法。
实验结果表明,Matlab软件可以有效地对信号进行频谱分析,并能够准确地显示信号的频谱特性,为信号处理和分析提供了有力的工具。
用Matlab进行信号与系统的时频域分析
专 业
学 生 姓 导 单 位
日 期
一、实验目的
1、了解matlab中相关函数的调用,以及其参数设定方式。学会调试代码运行过程中出现的错误。
2、熟悉掌握时域、频域的相关知识,加深对书本知识的理解。
二、实验任务
1、完成实验内容的三个小题,分析解决调试代码过程中出现的问题。
图形:
代码:
(二)信号的频域分析
上机题3.求周期矩形脉冲信号的频谱图,已知
图形:
代码:
五、实验思考题
对于上机题3,改变信号的周期,比较他们的计算结果。
T=0.4s T=0.5s
T=0.8s T=1s
六、实验小结
本次试验虽然时间很短,只有两节课时间,但是我却从中学到了很多。下面我就这次试验总结自己的感悟。
最后,这次试验不仅让我熟悉了matlab中关于信号的函数,还让我重新复习了信号相关的知识,感觉收获颇丰,希望这样的信号实验能越来越多。
第一,实现做好准备。这次实验前,许多同学都不知道实验要做什么内容,在老师提醒下,才开始找资料。这些事应该在实验前就做好了,这导致了最后有同学没有做完。这让我明白了,好的开始是成功的一半,天上不会掉馅饼,准备很重要。第二,细节决定成败。在上面的代码中,有很多错误只是抄写不准确,导致之前所有的代码都要重新打一遍,非常浪费时间,这完全可以避免。同样的,在学习中,有解许多题目时,往往一个小错就可能导致整个题目都是是错的,非常可惜。第三,学会找错。其实本次matlab实验还比较简单,大部分错误都是字符打错了。但是,我在过程中就发现了一个问题,比如第一题在最后一行代码输入之后,前面的两个图形都不见了。我问到其他同学,有些人遇到同样的问题,有些人则没有。而解决办法则是重新输入,不知道这是不是因为软件自身的原因,我重新输入之后,程序又运行正常了。这让那个我明白了在学习是要善于发现问题,在解决问题过程中让自己对知识了解得更透彻。同时这也让我明白了同学合作的重要性。
MATLAB课程设计报告--信号的频域分析及MATLAB实现
MATLAB电子信息应用课程设计设计五信号的频域分析及MA TLAB实现学院:信息学院专业班级:电信1201学号:201姓名:一、 设计目的通过该设计,理解傅里叶变换的定义及含义,掌握对信号进行频域分析 的方法。
二、 设计内容相关的信号知识:信号的离散傅里叶变换 从连续到离散:连续时间信号)(t x 以及对应的连续傅里叶变换)(ˆωx 都是连续函数。
将x和xˆ都离散化,并且建立对应的傅里叶变换。
假设x(t)时限于[0, L],再通过时域采样将)(t x 离散化,就可以得到有限长离散信号,记为)(t x discrete。
设采样周期为T ,则时域采样点数N=L/T 。
)()()()()(11nT t nT x nT t t x t x N n N n discrete-=-=∑∑-=-=δδ它的傅里叶变换为∑∑-=--==-=11)(1)()()(ˆN n Tin N n discrete enT x TnT t F nT x xωδω这就是)(t x 在时域采样后的连续傅里叶变换,也就是离散时间傅里叶变换,它在频域依然是连续的。
下面将频域信号转化为有限长离散信号。
与对时域信号的处理类似,假设频域信号是带限的,再经过离散化,即可得到有限长离散信号。
依据采样定理,时域采样若要能完全重建原信号,频域信号)(ˆωx应当带限于(0,1/T)。
由于时域信号时限于[0, L],由采样定理以及时频对偶的关系,频域的采样间隔应为1/L 。
故,频域采样点数为:NLT =11即频域采样的点数和时域采样同为N ,频域采样点为Nk kNT k <≤=0}/2{πω在DTFT 频域上采样:=][ˆk x∑-=-=12)(1)(ˆN n nkNik discrete enT x Tx πω令T=1,将其归一化,就得到离散傅里叶变换。
因此,DFT 就是先将信号在时域离散化,求其连续傅里叶变换后,再在频域离散化的结果。
离散傅里叶变换:1、有限长序列的离散傅里叶变换公式⎪⎪⎩⎪⎪⎨⎧==∑∑-=-=-10)/2(10)/2()(1)()()(N n knN j N n kn N j e k X N n x e n x k X ππMATLAB 函数:fft 功能是实现快速傅里叶变换,fft 函数的格式为: y=fft (x ),返回向量x 的不连续fourier 变化。
第六章 利用Matlab对信号进行频域分析
j ( n ) 33
2
1
e
j j n
3e 3
1
j j n
e 3e 3
2
2
3
x[n] X[k]ejkn/3 k2 X[2]ej2n/3 X[1]ejn/3 X[0]
X[1]ejn/3 X[2]ej2n/3 X[3]ejn
A
9
6.2 利用DTFT分析模拟信号频谱
➢ 连续周期信号相对于离散周期信号,连续 非周期信号相对于离散非周期信号,可以 通过时域抽样定理建立相互关系。因此, 在离散信号DTFT分析方法基础上可以增加 时域抽样的步骤,就可以实现连续信号的 DTFT分析。
A
7
%练习 利用观察法确定信号x[n]=cos(πn/3+ π/4)的DTFS X[n]的周期为N=6,利用欧拉公式得到
e e j ( n ) 33
j(
n
)
33
x[n]
2
1
j j n
e 3e 3
1
j j n
e 3e 3
2
2
从k=-2到k=3求和
A
8
j( n )
x[n] e e 3 3
A
15
➢ 连续非周期信号的分析步骤:
➢ (1)根据时域抽样定理,确定时域抽样间隔T, 得到离散序列 x [ k ]
➢ (2)确定信号截断长度M及窗函数的类型,得到 有限长度M点离散序列 xM[k]x[k]w[k]
➢ (3)确定抽样点数N,要求N≥M。
➢ (4)利用FFT函数进行N点FFT计算得到N点的 X[m].
A
17
➢ fsam=50;Tp=6;N=512;T=1/fsam; ➢ t=0:T:Tp; ➢ x=exp(-1*t); ➢ X=T*fft(x,N); ➢ subplot(2,1,1);plot(t,x); ➢ xlabel('t');title('时域信号'); ➢ w=(-N/2:N/2-1)*(2*pi/N)*fsam;%%%% ➢ y=1./(j*w+1); ➢ subplot(2,1,2);plot(w,abs(fftshift(X)),w,abs(y),'r-.'); ➢ title('幅度谱');xlabel('w'); ➢ legend('理论值','计算值',0); ➢ axis([-10,10,0,1.4]);
matlab时域宽度,MATLAB对信号的时域与频域分析
matlab时域宽度,MATLAB对信号的时域与频域分析%信号的时域和频域分析%信号的频域分析,计算⽅波的DFS(离散傅⾥叶变换),在60的时窗宽度上⽅波宽度分别为%5到12,并且画出x(n)和DFS(x(n))的杆状图L=5;N=60;k=[-N/2:N/2];xn=[zeros(1,(N-L+1)/2),ones(1,L),zeros(1,(N-L-1)/2)];n=[0:N-1];subplot(221)stem(n,xn);gridaxis([0 60 -0.3 1.3]);title('xn');p=0:N-1;WN=exp(-j*2*pi/N);nk=n'*p;WNnk=WN.^nk;Xk=xn*WNnk;magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);subplot(222)stem(k,magXk);gridaxis([-N/2 N/2 -0.5 5.5]);xlabel('k');ylabel('spectrum');title('DFS:L=5,N=60');L=12;N=60;k=-N/2:N/2;xn=[zeros(1,(N-L+1)/2),ones(1,L),zeros(1,(N-L-1)/2)];n=0:N-1;subplot(223)stem(n,xn);gridaxis([0 60 -0.3 1.3]);title('xn');p=[0:N-1];WN=exp(-j*2*pi/N);nk=n'*p;magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);subplot(224)stem(k,magXk);gridaxis([-N/2 N/2 -0.5 13]);xlabel('k');ylabel('spectrum');title('DFS:L=12,N=60');%频谱分析的若⼲问题%不同时窗正弦信号频谱的分析%1Hz的正弦波仅取10个周期及50个周期,都做4096点FFT,⽐较两者的频谱t=0:0.1:10; %取10或50(将10变成50即可)个周期的进⾏变换y1=sin(2*pi*t);Y1=fft(y1,4096); %4096点的快速傅⾥叶变换Y=fftshift(Y1);c=[0:2047]/409;plot(c,abs(Y(2049:4096)))axis([0 2 -5 60]);title('sin(t)周期 T=10')grid%加窗函数后的频谱特征分析%不加窗函数是正弦谱线与矩形窗频谱的卷积;加窗函数是正弦谱线于汉明窗频谱的卷积%后者的旁瓣⼩得多,但是主谱线宽⼀些t=0.1:0.1:20; %取20个周期y=sin(2*pi*t); %定义1Hz的正弦波w=hamming(200); %定义200长的汉明窗y=y.*w';Y1=fft(y,4096); %4096点的快速傅⾥叶变换Y=fftshift(Y1);c=[0:2047]./409.6;plot(c,abs(Y(2049:4096)))axis([0 3 -5 60]);title('sin(t) 加窗频谱');grid%CZT线性调频Z变换%应⽤CZT变换不在频率轴上均匀采样,对关⼼的部分加⼤采样密度,可以提⾼关⼼部分的f1=13.2;f2=13.41;f3=15;fs=60;n=0:N-1;t=2*pi*n/fs;e=fs/N;n1=0:e:(fs/2)-e;x=sin(f1*t)+sin(f2*t)+sin(f3*t); %三个不同频率正弦信号相加Y1=abs(fft(x)); %⼀般傅⾥叶频谱分析subplot(121)plot(n1,(Y1(1:N/2)));title('fft');grid;M=60; %CZT变换的长度f0=12.6;q=0.05;A=exp(j*2*pi*f0/fs); %CZT变换的起点W=exp(-j*2*pi*q/fs); %CZT变换的倾斜率Y3=czt(x,M,W,A); %CZT变换做频谱分析n2=f0:q:f0+(M-1)*q;subplot(122)plot(n2,abs(Y3));title('czt');grid%常见信号的频谱分析%基础波形 fft(快速傅⾥叶变换),fftshift(移动傅⾥叶变换的系数)n=2048;t=1:2048;y=zeros(1,n);y(1,[1020:1035])=1; %定义宽度为15的⽅波y1=[zeros(1,1000),ones(1,60),zeros(1,988)];%定义宽度为60的⽅波subplot(121)plot(t,y,'b',t,y1,'r')axis([850 1200 -0.2 1.3]);title('⽅形图');gridsubplot(122)Y2=fft(y,2048);Y3a=fftshift(Y3);w=-1024:1023;semilogy(w,abs(Y2a),'b',w,abs(Y3a),'r')axis([-500 500 -5 80]);title('⽅波频谱');axis([-250 250 1 100]);grid;%三⾓波n=2048;t=1:2048;y=[zeros(1,800),[1:500],zeros(1,748)]; %定义三⾓波subplot(121)plot(t,y)axis([0 2100 -30 560]);title('三⾓波');gridsubplot(122)Y1=fft(y,2048);Y=fftshift(Y1);c=-1024:1023;yw=log(abs(Y)+eps);plot(c,yw,'r')axis([-104 104 7 12]);title('三⾓波频谱');grid on;%冲击函数n=400;delta=4*pi/n;t=-2*pi:delta:2*pi;y=sinc(t); %定义冲击函数subplot(121)plot(t,y)axis([-7 7 -0.4 1.3]);title('sinc(t)');gridsubplot(122)c=-1024:1023;plot(c,abs(Y))axis([-500 500 -5 40]);title('sinc(t)的频谱');grid%调制信号%双边带调幅fs=1000;t=0:1/fs:.4;fc=250;y=0.4*cos(pi*20*t);x=modulate(y,fc,fs,'amdsb-tc'); %双边带调幅subplot(121)plot(t,x)legend('调幅双边带波形');gridsubplot(122)p=fft(x,1024);p1=fftshift(p);w=0:511;p2=abs(p1);plot(w,p2(1:512));grid;legend('调幅双边带频谱')axis([100 400 -10 100])%⽤直⽅图表⽰调频信号谱m=5; %⽤直⽅图表⽰调制指数为5的调频信号谱分析n=1:10;y1(n)=besseli(n,(i*m),1);z1=real(y1./(i.^(n)));z2=fliplr(z1);y0=besseli(0,(i*m),1);z0=real(y0);z=[z2 z0 z1];axis([-10 10 -.1 .8]);gridtitle('m=5')^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %四种数字调制⽅法(ASK FSK PSK OQPSK)的频谱图%产⽣码元宽度为64的随机序列%m⽂件n=1:8192;m=1:128;x(n)=randint(1,8192,2);x=[x(n)]';y(n)=zeros(1,8192);z(m)=zeros(1,128);for n=1:8192form=1:128if n==64*m-63z(m)=x(n);if m==ceil(n/64)y([(64*m-63):(64*m)]')=z(m);endendendendn=1:8192;rm2=y(n);%ASK调制n=[1:(2^13)];x1=cos(n.*1e9*2*pi/4e9);run('rm2');X2=rm2;x2=X2';x=x1.*X2;b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x1.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(200);u=(2*w1/pi)*1e9;figure(1)subplot(211)plot(u,magY1,'b',u,magY4,'r');gridtitle('ASKr');axis([4e8,1.6e9,0,1.1])X2=b.*X2;y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(200);k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(40); subplot(212)semilogy(u,magY2,'b',u,magY3,'r');gridtitle('ASKr-modulation');axis([0 1.2e9 3e-4 3]);figure(2)subplot(211);plot(n,x2);axis([0 720 -0.2 1.2])subplot(212);plot(n,x);axis([0 720 -1.2 1.2])%FSK调制频谱分析n=[1:(2^13)];d=.13;run('rm2');x2=((2*rm2)-1);x5=cos(.5*n.*((1e8*2*pi/4e8)-d));x4=cos(.5*n.*((1e8*2*pi/4e8)+d));x=cos(.5*n.*((1e8*2*pi/4e8)+d*x2));b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x4.*x3;y5=x5.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(200*2); Y4=fft(y4,(2^13));magY4=abs(Y4(1:1:(2^12)+1))/(70);Y5=fft(y5,(2^13));magY5=abs(Y5(1:1:(2^12)+1))/(70);subplot(211)plot(u,magY1,'b',u,magY4,'r',u,magY5,'g');gridtitle('FSKr');axis([1e8 1e9 0 .65]);X2=b.*x2;y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(50*6); k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(30); subplot(212)plot(u,magY2,'b',u,magY3,'r');gridtitle('FSKr-modulation');axis([0 1.2e9 0 2.3])figure(2)subplot(211);plot(n,x2);axis([0 320 -1.2 1.2])subplot(212);plot(n,x);axis([0 320 -1.2 1.2])%PSK调制n=[1:(2^13)];x1=cos(n.*1e9*2*pi/4e9);run('rm2');x2=(2*rm2)-1;x=x1.*x2;b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x1.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(300); Y4=fft(y4,(2^13));magY4=abs(Y4(1:1:(2^12)+1))/(30);k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;figure(1)subplot(211)y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(300); k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(30); subplot(212)plot(u,magY2,'b',u,magY3,'r');gridtitle('PSKr-modulation');axis([0 1.2e9 0 2.3])figure(2)subplot(211);plot(n,x2);title('PSKr');axis([0 1200 -1.2 1.2])subplot(212);plot(n,x);axis([100 275 -1.2 1.2])%谱估计 tfe 从输⼊输出中估计传递函数%估计传输函数h=fir1(30,.2,boxcar(31)); %使⽤矩形窗x=randn(16384,1); %输⼊信号y=filter(h,1,x); %输出信号z=tfe(x,y,1024,[],[],512);n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);grid%互功率谱密度 csd已知⼆信号求互功率谱密度h=fir1(30,.2,hamming(31)); %使⽤汉明窗h1=ones(1,10)/sqrt(10);r=randn(16384,1);x=filter(h1,1,r);y=filter(h,1,x);z=csd(x,y,1024,10000,triang(500),0,[]); %使⽤三⾓窗n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);gridx=randn(16384,1);y=filter(h,1,x);z=psd(y,1024,10000,kaiser(512,5),0,.95); %使⽤凯塞窗n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);grid。
如何使用Matlab进行频域分析和滤波处理
如何使用Matlab进行频域分析和滤波处理频域分析和滤波处理在信号处理领域中具有重要的地位。
Matlab是一种专业的数学软件,在频域分析和滤波处理方面提供了丰富的工具和函数。
本文将介绍如何使用Matlab进行频域分析和滤波处理,包括频谱分析、滤波器设计和滤波器应用等方面的内容。
一、频域分析的基本原理频域分析是将时域信号转换为频域表示的过程。
在频域中,信号的特征通过频谱来描述,频谱展示了信号中各个频率分量的强度和相位信息。
常用的频域分析方法有傅里叶变换、快速傅里叶变换(FFT)等。
1. 傅里叶变换傅里叶变换是将一个信号从时域转换到频域的数学工具。
在Matlab中,可以使用fft函数进行傅里叶变换。
例如,对于一个长度为N的时域信号x,在Matlab中可以使用X = fft(x)来计算其频域表示。
得到的频域信号X是一个复数数组,包含了信号在各个频率上的幅度和相位信息。
2. FFT算法快速傅里叶变换(FFT)是一种快速计算傅里叶变换的算法。
相较于传统的傅里叶变换,FFT算法具有计算效率高的优势,在信号处理中得到广泛应用。
在Matlab中,可以使用fft函数进行FFT计算。
例如,对于一个长度为N的时域信号x,在Matlab中可以使用X = fft(x, N)来进行FFT计算。
其中N是指定的变换点数,通常选择2的幂次作为变换点数,以提高计算效率。
二、频谱分析的应用频谱分析可以用来探索信号中各个频率分量的特点和相互关系。
常用的频谱分析方法有功率谱密度估计、谱系分析、半对数谱等。
1. 功率谱密度估计功率谱密度估计是分析信号的功率在不同频率上的分布情况。
在Matlab中,可以使用pwelch函数进行功率谱密度估计。
例如,对于一个长度为N的时域信号x,在Matlab中可以使用[Pxx, f] = pwelch(x)来计算其功率谱密度。
得到的Pxx是功率谱密度估计结果,f是对应的频率向量。
2. 谱系分析谱系分析是研究信号频谱在时间和频率上的变化规律。
如何利用Matlab技术进行频域分析
如何利用Matlab技术进行频域分析MATLAB是一种功能强大的数学软件,被广泛应用于科学研究和工程领域。
其中的频域分析功能被广泛用于信号处理、图像处理、音频处理等领域。
本文将介绍如何利用MATLAB技术进行频域分析,以及常用的频域分析方法和技巧。
一、频域分析的基本概念在开始介绍如何利用MATLAB进行频域分析之前,我们先来了解一下频域分析的基本概念。
频域分析是指将信号从时域(时间域)转换到频域(频率域),以便更好地理解信号的频谱特性。
频域分析的基本原理是傅里叶变换。
傅里叶变换是将一个信号分解成一系列正弦函数和余弦函数的和,通过这种方式可以清晰地看到信号的频谱成分。
MATLAB中提供了多种傅里叶变换的函数,比如fft、ifft等,可以快速、方便地进行频域分析。
二、MATLAB中的频域分析函数MATLAB中提供了多种用于频域分析的函数,包括快速傅里叶变换(FFT)、离散傅里叶变换(DFT)、傅里叶逆变换(IFFT)等。
1. 快速傅里叶变换(FFT)快速傅里叶变换是一种将离散信号转换为频域表示的快速方法。
在MATLAB 中,可以使用fft函数进行快速傅里叶变换,如下所示:```MATLABX = fft(x);```其中,x为输入信号,X为傅里叶变换后的结果。
通过快速傅里叶变换,可以将信号从时域转换到频域,得到信号的频谱信息。
2. 离散傅里叶变换(DFT)离散傅里叶变换是一种将离散信号转换为频域表示的方法。
在MATLAB中,可以使用dft函数进行离散傅里叶变换,如下所示:```MATLABX = dft(x);```其中,x为输入信号,X为傅里叶变换后的结果。
3. 傅里叶逆变换(IFFT)傅里叶逆变换是一种将频域信号转换回时域信号的方法。
在MATLAB中,可以使用ifft函数进行傅里叶逆变换,如下所示:```MATLABx = ifft(X);```其中,X为输入的频域信号,x为傅里叶逆变换后的结果。
实验六Matlab频域分析
实验六 MATLAB 频域分析5.1 频率特性的概念系统的频率响应是在正弦信号作用下系统的稳态输出响应。
对于线性定常系统,在正弦信号作用下,稳态输出是与输入同频率的正弦信号,仅是幅值和相位不同。
设系统传递函数为()G s ,其频率特性为s j (j )(s)|G G ωω==例5-1 对系统22(s)s 2s 3G =++,在输入信号()sin r t t =和()sin3r t t =下可由Matlab 求系统的输出信号,其程序如下:》num=2;den=[1 2 3]; 》G=tf(num,den); 》t=0:0.1:6*pi; 》u=sin(t);/ u=sin(3*t); 》y=lsim(G ,u,t); 》plot(t,u,t,y)运行程序显示系统响应如图5-1所示。
a) sin t 的响应 b) sin (3t)的响应 图5-1 正弦信号输入系统的稳态响应5.2用()nyquist sys 绘制极坐标图频率特性中的奈奎斯特图是奈奎斯特(Nyquist )稳定性判据的基础。
反馈控制系统稳定的充分必要条件为:奈奎斯特曲线逆时针包围(1,0)j -点的次数等于系统开环右极点个数。
调用Matlab 中nyquist() 函数可绘出奈奎斯特图,其调用格式为:,,[re im ω]=nyquist(num,den,ω)或sys =tf(num,den);nyquist(sys)式中,()/G s num den =;ω为用户提供的频率范围;re 为极坐标的实部;im 为极坐标的虚部。
若不指定频率范围,则为nyquist(num,den)。
在输入指令中,如果缺省了左边的参数说明,奈奎斯特函数将直接生成奈奎斯特图;当命令包含左端变量时,即[re,im,ω]=nyquist(num,den)时,则奈奎斯特函数将只计算频率响应的实部和虚部,并将计算结果放在数据向量re 和im 中。
在此情况下,只有调用plot 函数和向量re 、im ,才能生成奈奎斯特图。
ssch4_6利用MATLAB进行信号频域分析
X ( j)
(p) (p)
-100p
0
100p
余弦信号的理论频谱
利用MATLAB分析信号频谱
3. 频谱工程值与理论值的比较
[例] 利用MATLAB分析余弦信号x(t) cos(100pt)的频谱。
工程实际中只能获得有限长余弦信号 x工程(t) cos(100pt) P t
Sa( nπ ) cos(nπt)
n1
2
利用MATLAB分析信号频谱
xT
(t)
N n- N
Cne jn0t
0.5
N Sa( nπ ) cos(nπt)
n1
2
% Gibbs phenomenon
t= -2:0.001:2;
N=input('Number of harmonics= ');
c0=0.5;
利用MATLAB分析信号频谱
1. 男女语音信号的频谱分析
女生声音信号时域波形
男生声音信号时域波形
利用MATLAB分析信号频谱
MATLAB提供了计算频谱的函数:
fft(x): 计算信号M点的频谱。M是序列x的长度。 fft(x,N): 计算信号N点的频谱。
M>N,将原序列裁为N点计算N点的频谱; M<N,将原序列补零至N点,然后计算N点的频谱。
利用MATLAB分析信号频谱
%compute the spectrum of speech signal
[x,Fs,Nbits]=wavread('为什么要进行频域分析_男声.wav');
x=x(:,1);
N =length(x); t=(0:N-1)/Fs;
matlab 第6章频域
logspace(): 指定频率点w
w=用对数尺度表示 的频率点数据向量
w=logspace(a,b,n)
介于10a与10b之间的n点
Ex 2:
num=[0.5 5];
5 * (0.1s 1) G s2 0.6 s (0.5s 1)( s 1) 2500 50
d1=[0.5 1 0];d2=[1/2500 0.012 1]; den=conv(d1,d2); w=logspace(-1,3,200);%指定频率范围 [mag,phase,w]=bode(num,den,w)
k0=30; n1=1;d1=conv(conv([1 0],[0.1 1]),[0.2 1]); figure(1);sys=tf(k0*n1,d1); [mag,phase,w]=bode(sys) figure(1); margin(k0*n1,d1)
hold on
figure(2); sysc=feedback(sys,1);
Wcp=增益0dB对应频率 G(s)=num/den
[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w)
margin(num,den) margin(sys)
直接在Bode图上标明
bode(num,den) margin(num,den)
bode(num,den) [Gm,Pm,Wcg,Wcp]=margin(num,den)
从而减小了系统在剪切频率处的相位滞后超前校正的作用是新剪切频率提供一个相位超前量用以增大一个相位超前量用以增大系统相位稳定裕度使其满足动态性能要求设计方法设计方法画出校正前原系统的bode获取系统的剪切频率确定校正后的系统的剪切频率g2使这一点超前校正器能满足并在该点综合后幅频衰减为0db
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 练习 ➢ 1连续求以下信号的DTFS的系数
x [ n ] c o s ( n /3 0 ) 2 s i n ( n /9 0 )
➢ 2已知一个信号在一个周期内的DTFS系数由下式给 出X[k]=(1/2)k,假设N=10,求出时域信号x[n]。
.
➢ 例题2
➢ 已知一个周期序列,x[n]cos(n)0.5cos(7n)
在有限长度序列的DTFS为:
X [m ] 1 [ 0 ,4 ,0 ,0 ,0 ,0 ,0 ,8 e j 3 ,0 ,8 e j 3 ,0 ,0 ,0 ,0 ,0 ,4 ] 1 6
.
➢ N=16;n=0:N-1; ➢ x=cos(pi/8*n+pi/3)+0.5*cos(7*pi/8*n); ➢ X=fft(x)/N; ➢ subplot(2,1,1); ➢ stem(n-N/2,abs(fftshift(X))); ➢ ylabel('Magnitude');xlabel('Frequency(rad)'); ➢ subplot(2,1,2); ➢ stem(n-N/2,angle(fftshift(X))); ➢ ylabel('phase');xlabel('frequency(rad)');
➢ X=fft(x)/N ➢ 离散时间傅里叶级数的系数X是长度为N的
矢量X。以下命令 ➢ x=ifft(X)*N; ➢ 产生时域波形一个周期的矢量x.
.
➢ 例题1 求离散时间傅里叶级数的系数,信号
x [n ] 1 s in (n/1 2 3/8 )
➢ 周期为24,可以用以下命令来求离散时间傅里叶级 数的系数
➢ N=-11:12; ➢ x=ones(1,24)+sin(N*pi/12+3*pi/8); ➢ X=fft(x)/24 ➢ stem(N,fftshift(X)); ➢ xrecon=ifft(X)*24; ➢ xrecon(1:4) ➢ figure; ➢ stem(N,fftshift(xrecon))
.
➢ 例4: 利用DTFT近似分析连续信号x(t)etu(t) 的幅 度谱并与理论值比较
➢ 解:此信号的频谱为 X( j) 1 ,幅度谱为
X( j) 1
j 1
2 1
此信号的频谱为无限宽且单调衰减,当 2 2 5 ra d/s
X(j50) 0.0064 时,已经衰减到很小,因此初步选取
fm=25Hz为近似最高频率,则抽样间隔
➢
(5)最后求得连续周期信号的频谱
ห้องสมุดไป่ตู้
X(n0)
1 X[m] N
➢ 例题3 已知周期信号 x (t) c o s ( 1 0t) 2 s in ( 1 8t),计算其频谱。
➢ 解:所信以号取的N基≥频(2×0 92+r1ad=/1s周9)期为1s;最高次谐波为9018rad/s
.
➢ Example ➢ T0=1;N=19;T=T0/N; ➢ t=0:T:T0; ➢ x=cos(2*pi*5*t)+2*sin(2*pi*9*t); ➢ Xm=fft(x,N)/N; ➢ f=(-(N-1)/2:(N-1)/2)/N/T;%% ➢ figure; ➢ stem(t,x); ➢ figure; ➢ stem(f,abs(fftshift(Xm))); ➢ xlabel('f(Hz)');ylabel('Magnitude');title('幅度谱');
T
1 2 fm
0.02s
时域信号无限长,因此必须截断到有限长。该信 号单调衰减,到了t=6s后几乎衰减到0,取Tp=6s 进行分析,则截断点数为 N TP 300,采用矩形窗, 确定频域抽样点数为512点 T
.
➢ fsam=50;Tp=6;N=512;T=1/fsam; ➢ t=0:T:Tp; ➢ x=exp(-1*t); ➢ X=T*fft(x,N); ➢ subplot(2,1,1);plot(t,x); ➢ xlabel('t');title('时域信号'); ➢ w=(-N/2:N/2-1)*(2*pi/N)*fsam;%%%% ➢ y=1./(j*w+1); ➢ subplot(2,1,2);plot(w,abs(fftshift(X)),w,abs(y),'r-.'); ➢ title('幅度谱');xlabel('w'); ➢ legend('理论值','计算值',0); ➢ axis([-10,10,0,1.4]);
第六章 利用Matlab对信号进行频域分析
.
6.1离散时间周期信号:离散时间 傅里叶级数
基本周期为N,基频为Ω0=2π/N的周期信号x[n]的离散时间
傅里叶级数为:
N1
x[n] X[k]ejk0n
k0
其中
X[k]1N1x[n]ejk0n Nn0
.
➢ 在matlab中可以用fft和ifft来求解离散时间傅 里叶级数。长度为N的矢量x可以表示一个 周期为N的离散时间信号,则它的离散傅里 叶级数为:
.
➢ 练习 ➢ 对于连续时间周期信号
x(t)=sin(4πt)+sin(10 πt)+cos(16 πt)+cos(24 πt) 求其频谱
.
6.3利用DTFT计算连续非周期信号的频谱
➢ 连续非周期信号 x ( t ) 的频谱函数 X ( j ) 是连续谱。
定义为:X(
j)
x(t)ejtdt
相比离散时间非周期信号的DTFT分析方法,连续非周期信号的
j ( n ) 33
2
1
e
j j n
3e 3
1
j j n
e 3e 3
2
2
3
x[n] X[k]ejkn/3 k2 X[2]ej2n/3 X[1]ejn/3 X[0]
X[1]ejn/3 X[2]ej2n/3 X[3]ejn
.
6.2 利用DTFT分析模拟信号频谱
➢ 连续周期信号相对于离散周期信号,连续 非周期信号相对于离散非周期信号,可以 通过时域抽样定理建立相互关系。因此, 在离散信号DTFT分析方法基础上可以增加 时域抽样的步骤,就可以实现连续信号的 DTFT分析。
得到离散序列 x [ k ] ➢ (2)确定信号截断长度M及窗函数的类型,得到
有限长度M点离散序列 xM[k]x[k]w[k] ➢ (3)确定抽样点数N,要求N≥M。 ➢ (4)利用FFT函数进行N点FFT计算得到N点的
X[m]. ➢ (5)由X[m]可以得到连续信号的频谱 X ( j ) 样点
的近似值 X(j)|m2TX[m] NT
DFT分析方法增加了时域抽样环节。如果不满足抽样定理,会出
现混叠误差。如果信号在时域加窗截断过程中,窗口宽度(截断
长度)或窗口类型不合适,则会产生较大的频率泄露而影响频谱
分辨率。因此确定抽样间隔T和相应的截断长度是决定DTFT能否
正确分析信号频谱的关键。
.
➢ 连续非周期信号的分析步骤: ➢ (1)根据时域抽样定理,确定时域抽样间隔T,
.
.
➢ 周期为T0的连续时间周期信号x ( t ) 的频谱函为 , 定X义(n为0 )
X(n) 1 T0 x(t)ejn0tdt T0 0
➢ 式中T0是信号的周期 称为0 信 2T号0 的 2基 f频0
连续周期信号的频谱 X (n0 ) 为非周期离散普,普线间 隔为 0
.
➢ 相比离散周期信号的DFT分析方法,连续周期信号的DFT分析方法增 加了时域抽样环节。如果不满足抽样定理,将出现混叠误差。连续周 期信号分析步骤为:
83
8
利用FFT计算它的离散时间傅里叶级数
理论计算可得
x[n] cos( n )0.5cos(7 n)
83
8
j( n )
j( n )
j(7 n)
j(7 n)
e 8 3 e 8 3 e 8 e 8
2
4
1
j j n
(8e 3e 8
j jn
j 7 n
8e 3e 8 4e 8
j 7 n
4e 8 )
16
➢ (1)确定周期信号的基本周期T0
➢ (2)计算一个周期内的抽样点数N。若周期信号的最高次谐频为P次
谐 则频认为p 集0 中则信频号谱9中0%有((或2p根+1据)工根程普允线许;而若定周)期以信上号的的能频量谱的无前限(宽p,+1)
次谐波为近似的频谱范围,其余谐波可以忽略。取
N2p1
➢ (3)对连续周期信号以抽样间隔T进行抽样,T T 0 。 ➢ (4)利用FFT函数对x[k]作N点FFT运算,得到XN[m].
.
%练习 利用观察法确定信号x[n]=cos(πn/3+ π/4)的DTFS X[n]的周期为N=6,利用欧拉公式得到
e e j ( n ) 33
j(
n
)
33
x[n]
2
1
j j n
e 3e 3
1
j j n
e 3e 3
2
2
从k=-2到k=3求和
.
j( n )
x[n] e e 3 3