• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

1、MATLAB分析信号的频谱

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

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

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

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

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

结果如下:

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

MATLAB程序:

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

x=cos(2/3*pi*n);

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

subplot(211);

stem(n,x,\'filled\');

xlabel(\'n\');

title(\'x[n]\');

subplot(212);

plot(w/pi,X);

 

过采样:

w=-pi:0.01*pi:pi;

n=0:40;

x=cos(2/3*pi*n);

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

subplot(311);

stem(n,x,\'filled\');

xlabel(\'n\');

title(\'x[n]\');

subplot(312);

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

xlabel(\'\Omega/\pi\');

title(\'Magnitude of X\');

subplot(313);

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

xlabel(\'\Omega/\pi\');

title(\'Phase of X\');

临界采样:

w=-pi:0.01*pi:pi;

n=0:1.5:40;

x=cos(2/3*pi*n);

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

subplot(311);

stem(n,x,\'filled\');

xlabel(\'n\');

title(\'x[n]\');

subplot(312);

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

xlabel(\'\Omega/\pi\');

title(\'Magnitude of X\');

subplot(313);

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

xlabel(\'\Omega/\pi\');

title(\'Phase of X\');

 

欠采样:

w=-pi:0.01*pi:pi;

n=0:3:40;

x=cos(2/3*pi*n);

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

subplot(311);

stem(n,x,\'filled\');

xlabel(\'n\');

title(\'x[n]\');

subplot(312);

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

xlabel(\'\Omega/\pi\');

title(\'Magnitude of X\');

subplot(313);

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

xlabel(\'\Omega/\pi\');

title(\'Phase of X\');

信号重构--临界采样

n=-100:100;

 t=-30:0.005:30;

 wc=2;

 Ts=pi/wc;

 ws=2*pi/Ts;

 m=n*Ts;

 f=sinc(m/pi);

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

 t1=-9*pi:Ts:9*pi;

 f1=sinc(t1/pi);

 subplot(311);

 stem(t1,f1,\'filled\');

 xlabel(\'kTs\');

 ylabel(\'kTs\');

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

 subplot(312);

 plot(t,ft);

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

 xlabel(\'t\');

 ylabel(\'f(t)\');

 subplot(313);

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

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

 xlabel(\'t\');

信号重构--欠采样

n=-100:100;

  t=-30:0.005:30;

  wc=0.5;

  Ts=pi/wc;

  ws=2*pi/Ts;

  m=n*Ts;

  f=sinc(m/pi);

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

  t1=-9*pi:Ts:9*pi;

  f1=sinc(t1/pi);

  subplot(311);

  stem(t1,f1,\'filled\');

  xlabel(\'kTs\');

  ylabel(\'kTs\');

  title(\'欠采样信号\');

  subplot(312);

  plot(t,ft);

  xlabel(\'t\');

  ylabel(\'f(t)\');

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

  subplot(313);

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

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

  xlabel(\'t\');

信号重构--过采样

n=-100:100;

  t=-30:0.005:30;

  wc=4;

  Ts=pi/wc;

  ws=2*pi/Ts;

  m=n*Ts;

  f=sinc(m/pi);

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

  t1=-9*pi:Ts:9*pi;

  f1=sinc(t1/pi);

  subplot(311);

  stem(t1,f1,\'filled\');

  xlabel(\'kTs\');

  ylabel(\'kTs\');

  title(\'过采样信号\');

  subplot(312);

  plot(t,ft);

  xlabel(\'t\');

  ylabel(\'f(t)\');

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

  subplot(313);

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

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

  xlabel(\'t\');

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DELPHI中调用XSD去验证XML的合法性发布时间:2022-07-18
下一篇:
Delphi消息分发机制发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap