1.首先学习下傅里叶变换的东西。学高数的时候老师只是将傅里叶变换简单的说了下,并没有深入的讲解。而现在看来,傅里叶变换似乎是信号处理的方面的重点只是呢,现在就先学习学习傅里叶变换吧。

上面这幅图在知乎一个很著名的关于傅里叶变换的文章中的核心插图,我觉得这幅图很直观的就说明了傅里叶变换的实质。时域上的东西直观的反应到了频域上了,很完美的结合到了一起,233333.  无数正弦波叠加,震荡的叠加的最后结果竟然是方波,同理,任何周期性函数竟然都能拆分为傅里叶级数的形式,这样的简介与优雅,真令人折服。

2.MATLAB对信号做频谱分析

代码:(1)对 f1 = Sa(2t)的频谱分析

 clear;clc;
hold on;
R=0.05;
t=-1.2:R:1.2;
t1 = *t;
f1=sinc(t1); %Sa函数
subplot(,,),plot(t,f1)
xlabel('t'),ylabel('f1')
axis([-,,-0.3,1.2]); %写出Sa函数上下限 N=;
k=-N:N;
W1=;
W=k*W1/N;
F=f1*exp(-j*t'*W)*R; %f1的傅里叶变换
F=real(F); %取F的实部
subplot(,,),plot(W,F)
xlabel('W'),ylabel('F(jw)')

结果如下图:

(2)对 f2 = u(t+2) - u(t-2)的频谱分析

 R=0.05;
t=-:R:;
f2=(t>=-)-(t>=);
subplot(,,),plot(t,f2)
grid on;
xlabel('t'),ylabel('f2')
axis([-,,-0.5,1.5]); N=;k=-N:N;
W1=;
W=k*W1/N;
F=f2*exp(-j*t'*W)*R;
F=real(F);
subplot(,,),plot(W,F)
grid on;
xlabel('W'),ylabel('F(jw)')

结果如下图:

(3)对f3 = t[u(t+1) - u(t-1) ]的频谱分析

 R=0.05;
h=0.001;
t=-1.2:R:1.2;
y=t.*(t>=-)-t.*(t>=);
f4=diff(y)/h;
subplot(,,),plot(t,y)
xlabel('t'),ylabel('y')
axis([-1.2,1.2,-1.2,1.2]); N=;
k=-N:N;
W1=;
W=k*W1/N;
F=y*exp(-j*t'*W)*R;
F=real(F);
subplot(,,),plot(W,F)
xlabel('W'),ylabel('F(jw)')
axis([-,,-0.06,0.06]);

结果如下图:

(4)对正弦波做FFT频谱分析

 %*************************************************************************%
% FFT实践及频谱分析 %
%*************************************************************************%
%***************正弦波****************%
fs=;%设定采样频率
N=;
n=:N-;
t=n/fs;
f0=;%设定正弦信号频率
%生成正弦信号
x=sin(*pi*f0*t);
figure();
subplot();
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
grid; %进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(:length(y)-)'*fs/length(y);%进行对应的频率转换
figure();
subplot();
plot(f,mag);%做频谱图
axis([,,,]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号y=2*pi*10t幅频谱图N=128');
grid; %求均方根谱
sq=abs(y);
figure();
subplot();
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('正弦信号y=2*pi*10t均方根谱');
grid; %求功率谱
power=sq.^;
figure();
subplot();
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('正弦信号y=2*pi*10t功率谱');
grid; %求对数谱
ln=log(sq);
figure();
subplot();
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('正弦信号y=2*pi*10t对数谱');
grid; %用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[:length(xifft)-]/fs;
figure();
subplot();
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的正弦信号波形');
grid;

执行结果如下图:

(5)对矩形波做FFT频谱分析

 %****************.矩形波****************%
fs=;%设定采样频率
t=-:0.1:;
x=rectpuls(t,);
x=x(:);
figure();
subplot(); plot(t(:),x);%作矩形波的时域波形
xlabel('t');
ylabel('y');
title('矩形波时域波形');
grid; %进行FFT变换并做频谱图
y=fft(x);%进行fft变换
mag=abs(y);%求幅值
f=(:length(y)-)'*fs/length(y);%进行对应的频率转换
figure();
subplot();
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('矩形波幅频谱图');
grid; %求均方根谱
sq=abs(y);
figure();
subplot();
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('矩形波均方根谱');
grid; %求功率谱
power=sq.^;
figure();
subplot();
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('矩形波功率谱');
grid; %求对数谱
ln=log(sq);
figure();
subplot();
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('矩形波对数谱');
grid; %用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[:length(xifft)-]/fs;
figure();
subplot();
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的矩形波波形');
grid;

执行结果如下图:

(6)对白噪声做频谱分析

 %****************.白噪声****************%
fs=;%设定采样频率
t=-:0.1:;
x=zeros(,);
x()=;
figure();
subplot();
plot(t(:),x);%作白噪声的时域波形
xlabel('t');
ylabel('y');
title('白噪声时域波形');
grid; %进行FFT变换并做频谱图
y=fft(x); %进行fft变换
mag=abs(y);%求幅值
f=(:length(y)-)'*fs/length(y);%进行对应的频率转换
figure();
subplot();
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('白噪声幅频谱图');
grid; %求均方根谱
sq=abs(y);
figure();
subplot();
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('白噪声均方根谱');
grid; %求功率谱
power=sq.^;
figure();
subplot();
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('白噪声功率谱');
grid; %求对数谱
ln=log(sq);
figure();
subplot();
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('白噪声对数谱');
grid; %用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[:length(xifft)-]/fs;
figure();
subplot();
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的白噪声波形');
grid;

执行结果如下:

用MATLAB对信号做频谱分析的更多相关文章

  1. MATLAB信号与系统分析(五)——连续时间信号的频谱分析

    一.实验目的: 1.掌握傅立叶级数(FS),学会分析连续时间周期信号的频谱分析及MATLAB实现: 2.掌握傅立叶变换(FT),了解傅立叶变换的性质以及MATLAB实现. 二.利用符号运算求傅里叶级数 ...

  2. MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)

    关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...

  3. MATLAB处理信号得到频谱、相谱、功率谱

    (此帖引至网络资源,仅供参考学习)第一:频谱 一.调用方法 X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值 ...

  4. 一款DMA性能优化记录:异步传输和指定实时信号做async IO

    关键词:DMA.sync.async.SIGIO.F_SETSIG. DMA本身用于减轻CPU负担,进行CPU off-load搬运工作. 在DMA驱动内部实现有同步和异步模式,异步模式使用dma_a ...

  5. matlab 正弦信号产生

    fs=2400;%设定采样频率N=1000; %采样的点数n=0:N-1;t=n/fs; %1/fs相当于隔多长时间才一个点f1=50;%设定争先信号频率xn=sin(2*pi*f1*t);figur ...

  6. 余弦信号DFT频谱分析(继续)

    以前谈到序列的实际长度可以通过零填充方法加入,使得最终增加N添加表观分辨率. 但它并没有解决泄漏频率的问题. 根本原因在于泄漏窗口选择的频率. 由于矩形窗突然被切断,频谱旁瓣相对幅度过大,造成泄漏分量 ...

  7. 对AM信号FFT的matlab仿真

    普通调幅波AM的频谱,大信号包络检波频谱分析 u(t)=Ucm(1+macos t)cos ct ma称为调幅系数 它的频谱由载波,上下边频组成 , 包络检波中二极管截去负半周再用电容低通滤波,可 ...

  8. 小波变换检测信号突变点的MATLAB实现

    之前在不经意间也有接触过求突变点的问题.在我看来,与其说是求突变点,不如说是我们常常玩的"找不同".给你两幅图像,让你找出两个图像中不同的地方,我认为这其实也是找突变点在生活中的应 ...

  9. MATLAB—信号与系统中的应用

    文章目录 一. 理论知识 1.线性系统的响应 2.微分方程的解 Ⅰ.经典解 Ⅱ.完全响应 3.零输入响应 4.零状态响应 5.冲激响应 6.阶跃响应 7.卷积求零状态响应 二.连续信号的MATLAB描 ...

随机推荐

  1. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  2. ASP.NET MVC搭建项目后台UI框架—7、统计报表

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...

  3. JMeter专题系列(五)检查点

    JMeter也有像LR中的检查点: JMeter里面的检查点通过添加断言来完成. 检查点:我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用t.dat里面的文件呢.当然,我们可以 ...

  4. WebApi系列~FromUri参数自动解析成实体的要求

    回到目录 关于webapi我之前写了一些文章,大家可以根据目录去浏览,今天要说的是个怪问题,也是被我忽略的一个问题,当你的Url参数需要被Api自动解析成实体的属性,实事上是要有条件的,不是所以属性都 ...

  5. CSS3 莲花盛开动画

    点击这里查看效果:http://keleyi.com/a/bjad/32gxxsaw.htm 或者:http://keleyi.com/keleyi/phtml/css3/10a.htm 效果图: 代 ...

  6. javascript面试题:如何把一句英文每个单词首字母大写?

    上周看到大家在JS群讨论如何把一句英文句子单词收割字母大写,大家都说用正则简单,对于正则还是有点模糊,于是乎自己敲了下 //面试题:如何把一句英文每个单词首字母大写? var str="wh ...

  7. Struts2(2) —— Action

    Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法 ...

  8. maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序

    问题说明: 用maven构建了一个项目,目录结构如下: appassemblerd的配置: <plugin> <groupId>org.codehaus.mojo</gr ...

  9. SharePoint 2013 文档上传的多种形式

    SharePoint 2013 中的某些功能需要使用 ActiveX 控件.这会在不支持 ActiveX 的浏览器上产生限制.目前只有 32 位版本的 Internet Explorer 支持此功能. ...

  10. Linux2.6内核进程调度系列--scheduler_tick()函数1.总体思想

    参考的是ULK第三版,Linux2.6.11.12内核版本. 调度程序依靠几个函数来完成调度工作,其中最重要的第一个函数是scheduler_tick函数,主要步骤如下: /** * 维持当前最新的t ...