MATLAB的一些应用--最近用的比较多

1、MATLAB分析信号的频谱

快速Fourier变换(FFT)是离散傅里叶变换的快速算法,他是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。

针对几个个简单例子介绍一下:

(1、)假设数据采集频率为1000Hz,一个信号包含频率为50Hz、振幅为0.7的正弦波和频率为120Hz、振幅为1的正弦波,噪声为零平均值的随机噪声

用FFT方法分析其频谱方法Matlab程序如下:

clear
Fs = ; % 采样频率
T = /Fs; % 采样时间
L = ; % 信号长度
t = (:L-)*T; % 时间向量
x = 0.7*sin(*pi**t) + sin(*pi**t);
y = x + *randn(size(t)); % 加噪声正弦信号
figure()
plot(Fs*t(:),y(:))
title('零平均值噪音信号');
xlabel('time (milliseconds)')
NFFT = ^nextpow2(L); % Next power of from length of y
Y = fft(y,NFFT)/L;
f = Fs/*linspace(,,NFFT/);
figure()
plot(f,*abs(Y(:NFFT/)))
title('y(t)单边振幅频谱')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

结果如下:

(2)产生余弦信号以作频谱分析:余弦信号y=cos(2π*f*t);信号频率为f=10Hz;时宽:1s   采样率为fs=100Hz;

MATLAB程序:

clear all;
f=;
fs=;
T=;
n=round(T*fs);%采样点个数
t=linspace(,T,n);
y=cos(*pi*f/fs*[:n-]);
figure()
plot(t,y);
title('余弦信号时域');
xlabel('t/s');
ylabel('幅度');
%用fft函数对产生的余弦信号作频谱分析:
%注意:该步骤得到的是0~fs内的频谱。
fft_y=fft(y);
f=linspace(,fs,n);
figure()
plot(f,abs(fft_y));
title('余弦信号频谱(fft)');
xlabel('f/Hz');
ylabel('幅度');
% 用fftshift函数得到-fs/~fs/2内的频谱:
fftshift_y=fftshift(fft_y);
f=linspace(-fs/,fs/,n);
figure()
plot(f,abs(fftshift_y));
title('余弦信号频谱FFTshift');
xlabel('f/Hz');
ylabel('幅度');

结果:

可以看到10Hz处有峰值,90Hz的峰值是-10Hz的峰值向右频谱搬移fs=100Hz得到的。

由于实信号频谱幅度关于原点对称,可以看到10Hz与-10Hz处的两个峰值。

2、MATLAB中几种采样方法及实现

X(t)的时域信号

syms x;

>> f=sym('cos(2/3*pi*x)');

>> ezplot(f,[0,40]);

采样信号及频域波形

w=-pi:0.01*pi:pi;

n=:;

x=cos(/*pi*n);

X=x*exp(-j*n'*w);

subplot();

stem(n,x,'filled');

xlabel('n');

title('x[n]');

subplot();

plot(w/pi,X);

过采样:

w=-pi:0.01*pi:pi;

n=:;

x=cos(/*pi*n);

X=x*exp(-j*n'*w);

subplot();

stem(n,x,'filled');

xlabel('n');

title('x[n]');

subplot();

plot(w/pi,abs(X));

xlabel('\Omega/\pi');

title('Magnitude of X');

subplot();

plot(w/pi,angle(X));

xlabel('\Omega/\pi');

title('Phase of X');

临界采样:

w=-pi:0.01*pi:pi;

n=:1.5:;

x=cos(/*pi*n);

X=x*exp(-j*n'*w);

subplot();

stem(n,x,'filled');

xlabel('n');

title('x[n]');

subplot();

plot(w/pi,abs(X));

xlabel('\Omega/\pi');

title('Magnitude of X');

subplot();

plot(w/pi,angle(X));

xlabel('\Omega/\pi');

title('Phase of X');

欠采样:

w=-pi:0.01*pi:pi;

n=::;

x=cos(/*pi*n);

X=x*exp(-j*n'*w);

subplot();

stem(n,x,'filled');

xlabel('n');

title('x[n]');

subplot();

plot(w/pi,abs(X));

xlabel('\Omega/\pi');

title('Magnitude of X');

subplot();

plot(w/pi,angle(X));

xlabel('\Omega/\pi');

title('Phase of X');

信号重构--临界采样

n=-:;

 t=-:0.005:;

 wc=;

 Ts=pi/wc;

 ws=*pi/Ts;

 m=n*Ts;

 f=sinc(m/pi);

 ft=f*Ts*wc*sinc((wc/pi)*(ones(length(m),)*t-m'*ones(1,length(t))))./pi;

 t1=-*pi:Ts:*pi;

 f1=sinc(t1/pi);

 subplot();

 stem(t1,f1,'filled');

 xlabel('kTs');

 ylabel('kTs');

 title('临界采样信号');

 subplot();

 plot(t,ft);

 title('临界采样信号重构信号');

 xlabel('t');

 ylabel('f(t)');

 subplot();

 plot(t,ft-sinc(t/pi));

 title('重构信号与原信号误差');

 xlabel('t');

信号重构--欠采样

n=-:;

  t=-:0.005:;

  wc=0.5;

  Ts=pi/wc;

  ws=*pi/Ts;

  m=n*Ts;

  f=sinc(m/pi);

  ft=f*Ts*wc*sinc((wc/pi)*(ones(length(m),)*t-m'*ones(1,length(t))))./pi;

  t1=-*pi:Ts:*pi;

  f1=sinc(t1/pi);

  subplot();

  stem(t1,f1,'filled');

  xlabel('kTs');

  ylabel('kTs');

  title('欠采样信号');

  subplot();

  plot(t,ft);

  xlabel('t');

  ylabel('f(t)');

  title('欠采样信号重构信号');

  subplot();

  plot(t,ft-sinc(t/pi));

  title('重构信号与原信号误差');

  xlabel('t');

信号重构--过采样

n=-:;

  t=-:0.005:;

  wc=;

  Ts=pi/wc;

  ws=*pi/Ts;

  m=n*Ts;

  f=sinc(m/pi);

  ft=f*Ts*wc*sinc((wc/pi)*(ones(length(m),)*t-m'*ones(1,length(t))))./pi;

  t1=-*pi:Ts:*pi;

  f1=sinc(t1/pi);

  subplot();

  stem(t1,f1,'filled');

  xlabel('kTs');

  ylabel('kTs');

  title('过采样信号');

  subplot();

  plot(t,ft);

  xlabel('t');

  ylabel('f(t)');

  title('过采样信号重构信号');

  subplot();

  plot(t,ft-sinc(t/pi));

  title('重构信号与原信号误差');

  xlabel('t');

MATLAB的一些应用--最近用的比较多的更多相关文章

  1. Matlab 绘制三维立体图(以地质异常体为例)

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  2. Matlab slice方法和包络法绘制三维立体图

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  3. Matlab 高斯_拉普拉斯滤波器处理医学图像

    前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...

  4. MATLAB中绘制质点轨迹动图并保存成GIF

    工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...

  5. linux下配置matlab运行环境(MCR)

    在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...

  6. EMD分析 Matlab 精华总结 附开源工具箱(全)

    前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...

  7. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  8. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

  9. Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结

    Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...

  10. 使用MATLAB对图像处理的几种方法(下)

     试验报告 一.试验原理: 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对像素灰度值的统计,直方图均衡是对 ...

随机推荐

  1. @RequestBody和@ResponseBody的使用情形以及RestTemplate的http报文转换

    @RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换. @RequestBody 1.@requestBody注解常用来处理content-typ ...

  2. Mybatis${}、#{}及使用#{}时指定jdbcType

    一.Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${} 我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这 ...

  3. PHP-FPM 慢执行日志、网站隔离配置

    慢执行日志 1.配置文件下打开慢执行日志 vim /usr/local/php/etc/php-fpm.conf # 慢执行日志路径 slowlog = /path/to/slow.log # 设置超 ...

  4. 在两台服务器之间建立信任关系解决scp,ssh等不用输入密码等问题

    A服务器(client)向B服务(server)SCP,SSH. A服务器:ssh-keygen -t rsa -C "kangzj" 一直回车. cd .ssh vim id_r ...

  5. MySQL-Last_Errno: 1594

    故障现象  :MySQL slave所在机器自动重启,启动MySQL后,查看主从信息如下: Error_code: 1594   mysql> show slave status \G . ro ...

  6. 20145217《网络对抗》 Web安全基础实践

    20145217<网络对抗> Web安全基础实践 一.实践任务 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.实验后回答问题 (1)SQL注入攻击原理,如 ...

  7. Easy-RSA 3快速入门自述文件

    Easy-RSA 3快速入门自述文件 这是使用Easy-RSA版本3的快速入门指南.运行./easyrsa -h可以找到有关使用和特定命令的详细帮助.可以在doc /目录中找到其他文档. 如果您从Ea ...

  8. windchill相关功能操作

    1.创建产品   2.创建文件夹   3.创建文档   4.创建用户账号   5.创建组   6.创建更改请求   7.创建部件新视图版本   8.创建可重用属性和全局枚举   9.在组织内分配上下文 ...

  9. python技术

    要把zabbix弄成自动监控,下发任务,部署,事件恢复得功能

  10. 使用Executor管理Thread对象详解

    java SE5的java.util.concurrent包中的执行器(Executor)是管理Thread对象的优选方法.使用Executor管理Thread对象可以简化并发编程. Executor ...