matlab频谱分析

合集下载

实验2利用MATLAB分析信号频谱及系统的频率特性

实验2利用MATLAB分析信号频谱及系统的频率特性

实验2利用MATLAB分析信号频谱及系统的频率特性引言:在信号处理和通信领域中,频谱分析是一项非常重要的技术。

频谱分析可以帮助我们了解信号的频率特性,包括频率成分和幅度。

MATLAB是一款功能强大的数学软件,提供了多种工具和函数用于信号处理和频谱分析。

本实验旨在通过MATLAB分析信号频谱及系统的频率特性,深入理解信号处理和频域分析的原理和应用。

实验步骤:1.生成一个信号并绘制其时域波形。

首先,我们可以使用MATLAB提供的函数生成一个信号。

例如,我们可以生成一个用正弦函数表示的周期信号。

```matlabt=0:0.001:1;%时间范围为0到1秒,采样率为1000Hzf=10;%信号频率为10Hzx = sin(2*pi*f*t); % 生成正弦信号plot(t,x) % 绘制信号的时域波形图title('Time domain waveform') % 添加标题```2.计算信号的频谱并绘制频谱图。

使用MATLAB中的FFT函数可以计算信号的频谱。

FFT函数将信号从时域转换为频域。

```matlabFs=1000;%采样率为1000HzL = length(x); % 信号长度NFFT = 2^nextpow2(L); % FFT长度X = fft(x,NFFT)/L; % 计算X(k)f = Fs/2*linspace(0,1,NFFT/2+1); % 计算频率轴plot(f,2*abs(X(1:NFFT/2+1))) % 绘制频谱图title('Frequency spectrum') % 添加标题```3.使用MATLAB分析系统的频率特性。

MATLAB提供了Signal Processing Toolbox,其中包含了分析系统频率特性的函数和工具。

```matlabHd = designfilt('lowpassfir', 'FilterOrder', 6,'CutoffFrequency', 0.3, 'SampleRate', Fs); % 设计一个低通滤波器fvtool(Hd) % 显示滤波器的频率响应``````matlab[W,F] = freqz(Hd); % 计算滤波器的频率响应plot(F,abs(W)) % 绘制滤波器的振幅响应title('Frequency response of lowpass filter') % 添加标题```实验结果:运行上述代码后,我们可以得到如下结果:1.时域波形图2.频谱图3.滤波器频率响应讨论与结论:本实验通过MATLAB分析信号频谱及系统的频率特性,深入理解了信号处理和频域分析的原理和应用。

Matlab中的频谱分析技巧

Matlab中的频谱分析技巧

Matlab中的频谱分析技巧频谱分析是信号处理中一种常用的技术,它可以将信号在频域中进行分析,从而揭示出信号的频率成分和能量分布。

在Matlab中,有许多强大的工具和函数可以用于频谱分析,本文将介绍一些常用的频谱分析技巧。

一、信号的时域和频域表示在进行频谱分析之前,我们首先需要了解信号的时域和频域表示。

时域表示是指信号在时间上的变化情况,主要通过波形图来展示。

而频域表示则是指信号在频率上的分布情况,主要通过频谱图来展示。

在Matlab中,我们可以使用fft函数将信号从时域转换为频域。

二、频谱图的绘制绘制频谱图是频谱分析中的一个重要步骤。

在Matlab中,我们可以使用fft函数将信号进行傅里叶变换,然后使用plot函数将频谱绘制出来。

例如,我们有一个采样频率为1000Hz的正弦信号,频率为50Hz,信号持续时间为1秒。

以下是绘制频谱图的代码:```fs = 1000; % 采样频率t = 0:1/fs:1-1/fs; % 时间序列f = 50; % 信号频率x = sin(2*pi*f*t); % 生成正弦信号N = length(x); % 信号长度X = fft(x,N); % 信号傅里叶变换P = abs(X).^2/N; % 计算信号功率谱密度f = fs*(0:(N/2))/N; % 构造频率向量plot(f,P(1:N/2+1)) % 绘制频谱图xlabel('Frequency (Hz)') % X轴标签ylabel('Power Spectral Density') % Y轴标签```三、频谱分析中的窗函数在实际的信号处理中,我们通常会遇到非周期信号或突变信号。

这种信号在频谱分析中会产生泄漏效应,即频谱图中出现额外的频谱成分。

为了解决这个问题,我们可以使用窗函数来减小泄漏效应。

Matlab中提供了多种窗函数的函数,如hamming、hanning、blackman等。

利用Matlab进行频谱分析的方法

利用Matlab进行频谱分析的方法

利用Matlab进行频谱分析的方法引言频谱分析是信号处理和电子工程领域中一项重要的技术,用于分析信号在频率域上的特征和频率成分。

在实际应用中,频谱分析广泛应用于音频处理、图像处理、通信系统等领域。

Matlab是一种强大的工具,可以提供许多功能用于频谱分析。

本文将介绍利用Matlab进行频谱分析的方法和一些常用的工具。

一、Matlab中的FFT函数Matlab中的FFT(快速傅里叶变换)函数是一种常用的频谱分析工具。

通过使用FFT函数,我们可以将时域信号转换为频域信号,并得到信号的频谱特征。

FFT 函数的使用方法如下:```Y = fft(X);```其中,X是输入信号,Y是输出的频域信号。

通过该函数,我们可以得到输入信号的幅度谱和相位谱。

二、频谱图的绘制在进行频谱分析时,频谱图是一种直观和易于理解的展示形式。

Matlab中可以使用plot函数绘制频谱图。

首先,我们需要获取频域信号的幅度谱。

然后,使用plot函数将频率与幅度谱进行绘制。

下面是一个示例:```X = 1:1000; % 时间序列Y = sin(2*pi*10*X) + sin(2*pi*50*X); % 输入信号Fs = 1000; % 采样率N = length(Y); % 信号长度Y_FFT = abs(fft(Y)); % 计算频域信号的幅度谱f = (0:N-1)*(Fs/N); % 频率坐标plot(f, Y_FFT);```通过上述代码,我们可以得到输入信号在频谱上的特征,并将其可视化为频谱图。

三、频谱分析的应用举例频谱分析可以应用于许多实际问题中。

下面将介绍两个常见的应用举例:语音信号分析和图像处理。

1. 语音信号分析语音信号分析是频谱分析的一个重要应用领域。

通过对语音信号进行频谱分析,我们可以探索声波的频率特性和信号的频率成分。

在Matlab中,可以使用wavread 函数读取音频文件,并进行频谱分析。

下面是一个示例:```[waveform, Fs] = wavread('speech.wav'); % 读取音频文件N = length(waveform); % 信号长度waveform_FFT = abs(fft(waveform)); % 计算频域信号的幅度谱f = (0:N-1)*(Fs/N); % 频率坐标plot(f, waveform_FFT);```通过上述代码,我们可以获取语音信号的频谱特征,并将其可视化为频谱图。

matlab 计算频谱的命令

matlab 计算频谱的命令

【主题】matlab 计算频谱的命令一、matlab 中的频谱分析在 matlab 中,频谱分析是一种常见的数据处理技术,主要用于分析信号在频域上的特性。

频谱分析可以帮助我们了解信号的频率成分、周期性特征以及信号之间的关系,因此在信号处理、通信系统、音频分析等领域有着广泛的应用。

matlab 提供了丰富的频谱分析函数和命令,通过这些工具我们可以快速、准确地进行频谱分析,并获取有价值的信息。

二、常用的频谱分析命令1. fftfft 是 matlab 中最常用的频谱分析命令之一。

它可以将时域信号转换为频域信号,通过计算信号的傅立叶变换来获取信号的频谱信息。

其基本语法为:Y = fft(X),其中 X 表示输入的时域信号,Y 表示输出的频域信号。

对于一个长度为 N 的输入信号,fft 命令将返回一个长度为 N 的复数数组,其中包含了信号在频域上的幅度和相位信息。

我们可以进一步对这些复数进行振幅谱和相位谱的分析,以获取更详细的频谱特征。

2. periodogramperiodogram 是用于计算信号功率谱密度(PSD)的命令。

它可以帮助我们分析信号在频域上的能量分布情况,从而了解信号的频率成分和能量分布情况。

其基本语法为:Pxx = periodogram(X),其中 X 表示输入的信号。

通过 periodogram 命令,我们可以得到信号在不同频率上的功率谱密度估计值,以及相应的频率坐标。

这些信息对于分析信号的频谱特性非常有帮助,可以用于识别信号的主要频率成分和频率分布规律。

3. spectrogramspectrogram 命令用于计算信号的短时傅立叶变换,并绘制信号的时频谱图像。

它可以帮助我们观察信号在时间和频率上的变化规律,从而发现信号的时变特性和频率变化趋势。

其基本语法为:S = spectrogram(X),其中 X 表示输入的信号。

通过 spectrogram 命令,我们可以得到信号的时频谱图像,其中横轴表示时间,纵轴表示频率,颜色表示信号强度。

Matlab中的时频分析与信号频谱分析

Matlab中的时频分析与信号频谱分析

Matlab中的时频分析与信号频谱分析一、引言信号分析是现代工程中不可或缺的一项技术。

它被广泛应用于通信、声音处理、图像处理等领域。

而时频分析与信号频谱分析作为信号分析的两个重要方面,在Matlab中有着强大的工具支持。

本文将重点介绍Matlab中的时频分析与信号频谱分析,并探讨它们在实际应用中的价值和意义。

二、时频分析时频分析是一种将信号的时域和频域特征结合起来进行分析的方法。

它主要用于分析非平稳信号中的瞬态特征,并揭示信号在时间和频率上的变化规律。

在Matlab中,时频分析可以通过多种工具实现,如短时傅里叶变换(Short-time Fourier Transform,STFT)、连续小波变换(Continuous Wavelet Transform,CWT)等。

1. 短时傅里叶变换(STFT)STFT是时频分析中最常用的方法之一。

它将信号分成若干个短时段,并对每个短时段应用傅里叶变换来得到瞬时频谱。

在Matlab中,可以使用stft函数来实现STFT。

通过调节窗函数的类型和窗长、重叠等参数,可以灵活地进行时频分析。

2. 连续小波变换(CWT)CWT是一种基于小波分析原理的时频分析方法。

它利用小波函数将信号分解成不同频率的成分,并计算每个时刻的频率特征。

在Matlab中,可以使用cwt函数来进行CWT。

通过选择合适的小波函数和尺度参数,可以获得更精确的时频信息。

三、信号频谱分析信号频谱分析是一种通过傅里叶变换等方法来分析信号的频域特征的方法。

它可以揭示信号中的频率成分、频谱密度等信息,对于理解信号的频率特性及其在系统中的传输和处理具有重要意义。

在Matlab中,信号频谱分析可以通过快速傅里叶变换(Fast Fourier Transform,FFT)等函数来实现。

1. 快速傅里叶变换(FFT)FFT是一种高效的傅里叶变换算法,能够快速计算信号的频谱。

在Matlab中,可以使用fft函数来进行FFT。

MATLAB信号频谱分析FFT详解

MATLAB信号频谱分析FFT详解

MATLAB信号频谱分析FFT详解FFT(快速傅里叶变换)是一种常用的信号频谱分析方法,它可以将信号从时域转换到频域,以便更好地分析信号中不同频率成分的特征。

在MATLAB中,使用fft函数可以方便地进行信号频谱分析。

首先,我们先介绍一下傅里叶变换的基本概念。

傅里叶变换是一种将信号分解成不同频率成分的技术。

对于任意一个周期信号x(t),其傅里叶变换X(f)可以表示为:X(f) = ∫(x(t)e^(-j2πft))dt其中,X(f)表示信号在频率域上的幅度和相位信息,f表示频率。

傅里叶变换可以将信号从时域转换到频域,以便更好地分析信号的频率特征。

而FFT(快速傅里叶变换)是一种计算傅里叶变换的高效算法,它通过分治法将傅里叶变换的计算复杂度从O(N^2)降低到O(NlogN),提高了计算效率。

在MATLAB中,fft函数可以方便地计算信号的傅里叶变换。

使用FFT进行信号频谱分析的步骤如下:1. 构造信号:首先,我们需要构造一个信号用于分析。

可以使用MATLAB中的一些函数生成各种信号,比如sin、cos、square等。

2. 采样信号:信号通常是连续的,为了进行FFT分析,我们需要将信号离散化,即进行采样。

使用MATLAB中的linspace函数可以生成一定长度的离散信号。

3. 计算FFT:使用MATLAB中的fft函数可以方便地计算信号的FFT。

fft函数的输入参数是离散信号的向量,返回结果是信号在频率域上的复数值。

4. 频率换算:信号在频域上的复数值其实是以采样频率为单位的。

为了更好地观察频率成分,我们通常将其转换为以Hz为单位的频率。

可以使用MATLAB中的linspace函数生成一个对应频率的向量。

5. 幅度谱计算:频域上的复数值可以由实部和虚部表示,我们一般更关注其幅度,即信号的相对强度。

可以使用abs函数计算出频域上的幅度谱。

6. 相位谱计算:除了幅度谱,信号在频域上的相位信息也是重要的。

如何使用Matlab技术进行频谱分析

如何使用Matlab技术进行频谱分析

如何使用Matlab技术进行频谱分析一、引言频谱分析是一种广泛应用于信号处理领域的重要技术,可以帮助我们了解信号的频率成分和能量分布情况。

Matlab作为一种强大的科学计算软件,提供了丰富的函数和工具包,能够方便快捷地进行频谱分析。

本文将介绍如何使用Matlab技术进行频谱分析,从数据处理到结果展示,将为读者提供全面的指导。

二、数据准备与导入首先,我们需要准备一组待分析的信号数据。

这可以是一个来自传感器的实时采集数据,也可以是从文件中读取的离线数据。

Matlab提供了多种数据导入函数,例如`csvread`函数可以导入CSV格式的数据文件,`load`函数可以导入Matlab的二进制数据文件。

三、时域分析在进行频谱分析之前,我们通常需要先对信号进行必要的时域分析。

这包括对信号进行采样、滤波、降噪等处理,以便获得更准确的频谱分析结果。

1. 采样:如果信号是以连续时间形式存在,我们需要首先对其进行采样。

Matlab提供了`resample`函数可以进行信号的采样,可以根据需要进行上采样或下采样操作。

2. 滤波:滤波是常用的信号处理方法之一,可以去除信号中的噪声以及不感兴趣的频率成分。

Matlab提供了多种滤波函数,例如`lowpass`函数可以进行低通滤波,`bandpass`函数可以进行带通滤波。

3. 降噪:在一些实际应用场景中,信号可能受到各种干扰和噪声的影响。

在进行频谱分析之前,我们需要对信号进行降噪处理,以获得准确的频谱结果。

Matlab提供了`denoise`函数可以进行信号的降噪处理,例如小波降噪、基于稀疏表示的降噪等。

四、频谱分析方法频谱分析是指对信号的频率成分进行分析和研究的过程。

常见的频谱分析方法有傅里叶变换、功率谱估计、自相关函数等。

1. 傅里叶变换:傅里叶变换是频谱分析的基础方法之一,可以将信号从时间域转换到频域。

Matlab提供了`fft`函数用于计算离散傅里叶变换(DFT),可以得到信号的频谱图。

matlab 信号 频谱分析实验报告

matlab 信号 频谱分析实验报告

matlab 信号频谱分析实验报告《Matlab 信号频谱分析实验报告》实验目的:通过Matlab软件对信号进行频谱分析,了解信号的频谱特性,并掌握频谱分析的基本方法。

实验原理:信号的频谱分析是指将信号在频域上进行分析,得到信号的频谱特性。

频谱分析可以帮助我们了解信号的频率成分,频率分布情况,以及信号的频谱密度等信息。

在Matlab中,可以使用fft函数对信号进行频谱分析,得到信号的频谱图像。

实验步骤:1. 生成信号:首先在Matlab中生成一个信号,可以是正弦信号、方波信号或者任意复杂的信号。

2. 采样信号:对生成的信号进行采样,得到离散的信号序列。

3. 频谱分析:使用fft函数对采样的信号进行频谱分析,得到信号的频谱特性。

4. 绘制频谱图像:将频谱分析得到的结果绘制成频谱图像,观察信号的频谱分布情况。

实验结果分析:通过频谱分析,我们可以得到信号的频谱图像,从图像中可以清晰地看出信号的频率成分,频率分布情况,以及信号的频谱密度等信息。

通过对信号频谱图像的观察和分析,可以更好地了解信号的频谱特性,为后续的信号处理和分析提供参考。

实验结论:通过本次实验,我们成功使用Matlab对信号进行了频谱分析,得到了信号的频谱特性,并且掌握了频谱分析的基本方法。

频谱分析是信号处理和分析的重要工具,对于理解信号的频率特性和频率分布情况具有重要意义。

希望通过本次实验,能够对信号的频谱分析有更深入的了解,并且能够在实际工程中应用到相关领域。

通过本次实验,我们对Matlab信号频谱分析有了更深入的了解,对信号处理和分析有了更深入的认识,也为我们今后的学习和工作提供了更多的帮助。

希望通过不断地实践和学习,能够更加深入地掌握信号频谱分析的相关知识,为实际工程应用提供更多的帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计出一套完整的系统,对信号进行频谱分析和滤波处理;1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。

2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。

%写上标题%设计低通滤波器:[N,Wc]=buttord()%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth低通滤波器[h,f]=freqz(); %求数字低通滤波器的频率响应figure(2); % 打开窗口2subplot(221); %图形显示分割窗口plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图title(巴氏低通滤波器'');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形xlabel('时间(seconds)');ylabel('时间按幅度');SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换w= %新信号角频率subplot(223);plot()); %绘制叠加函数S经过低通滤波器以后的频谱图title('低通滤波后的频谱图');%设计高通滤波器[N,Wc]=buttord()%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器[h,f]=freqz(); %求数字高通滤波器的频率响应figure(3);subplot(221);plot()); %绘制Butterworth高通滤波器的幅频响应图title('巴氏高通滤波器');grid; %绘制带网格的图像sf=filter(); %叠加函数S经过高通滤波器以后的新函数subplot(222);plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');w; %新信号角频率subplot(223);plot()); %绘制叠加函数S经过高通滤波器以后的频谱图title('高通滤波后的频谱图');%设计带通滤波器[N,Wc]=buttord([)%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth带通滤波器[h,f]=freqz(); %求数字带通滤波器的频率响应figure(4);subplot(221);plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图title('butter bandpass filter');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换w=( %新信号角频率subplot(223);plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图title('带通滤波后的频谱图');matlab如何做频谱分析% ---------------------------------------------------------------------------------------------------------------- % 方案1:“x = a*cos(2*pi*w*t)”的形式:% ----------------------------------------------------------------------------------------------------------------% 注意:1.时域的持续时间范围应较大;% 2.频率w与序列k的对应关系(N为序列总长度):w = 1/dt * k/N;% 3.采样频率1/dt应大于w 的2倍% 4.结果曲线的峰值的横坐标对应的就是w和-w值% ----------------------------------------------------------------------------------------------------------------a = 0.75;w = pi/3;dt = 0.2;t = [-30*pi:dt:30*pi];N = size(t, 2);x = a*cos(2*pi*w*t);y = fft(x);y = fftshift(y);figure;subplot(2,1,1);plot(t,x);subplot(2,1,2);plot(1/dt*(-N/2+1:N/2)/N, abs(y));% ----------------------------------------------------------------------------------------------------------------% 方案2:“x = a*cos(w*t)”的形式:% ----------------------------------------------------------------------------------------------------------------% 注意:1.时域的持续时间范围应较大;% 2.频率w与序列k的对应关系(N为序列总长度):w = 1/dt *2*pi* k/N;% 3.采样频率1/dt应大于w/(2*pi) 的2倍% 4.结果曲线的峰值的横坐标对应的就是w和-w值% ----------------------------------------------------------------------------------------------------------------a = 0.75;w = pi/3;dt = 1;t = [-20*pi:dt:20*pi];N = size(t, 2);x = a*cos(w*t);y = fft(x);y = fftshift(y);figure;subplot(2,1,1);plot(t,x);subplot(2,1,2);plot(1/dt*2*pi*(-N/2:N/2-1)/N, abs(y));备注:由于使用了fftshift,所以得到的频谱序列关于原点对称,如果不需要负半轴的话自行修改一下就ok了function f=frequency(x,fs)dtlen=length(x);t=(0:dtlen-1)/fs;subplot(211);plot(t,x);axis tight;y=abs(fft(x))*2/dtlen;ff=(0:dtlen/2-1)*fs/dtlen;subplot(212);f=y(1:floor(dtlen/2));plot(ff,f);axis tight;return;Matlab编程实现FFT实践及频谱分析内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%******************************************************************** *****%% FFT实践及频谱分析%%******************************************************************** *****%%******************************************************************** *****%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128'); grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱'); grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************%fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图'); grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)'); ylabel('均方根谱');title('矩形波均方根谱'); grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)'); ylabel('功率谱');title('矩形波功率谱'); grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)'); ylabel('对数谱');title('矩形波对数谱'); grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************%fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱'); grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱'); grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱'); grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs; figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。

相关文档
最新文档