加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab进行DFT变换函数

(2014-05-10 09:26:57)
标签:

it

分类: MATLAB

function [f,X_m,X_fai]=DFT(xn,ts,N)
% [f,X_m,X_fai]=DFT(xn,ts)
% 离散序列的傅里叶变换 出图
% 输入  xn为离散序列 为向量  ts为序列的采样时间/s
% 输出 f为频率向量,X_m为幅值向量,X_fai为相位向量
% 注意计算出来的0频分量(直流分量应该除以2)  直流分量的符号应结合相位图来确定

if nargin==2
    N=length(xn);
end

Xk=fft(xn,N);
fs=1/ts;               %采样频率 HZ
X_m=abs(Xk)*2/N;        %幅值
X_fai=angle(Xk);      %相位
Nn=floor((N-1)/2);    %变换后有用的点数-1
f=(0:Nn)*fs/N ;       %横坐标 频率HZ
X_m=X_m(1:Nn+1);      %幅值(仅取有用点Nn个点)
X_fai=X_fai(1:Nn+1);  %相位(仅取有用点Nn个点)
X_fai=unwrap(X_fai);   %去除相位的间断点(仅在出图时作用)
X_fai=X_fai*180/pi;   %化成°单位

if nargout==0
    plot(f,X_m)
    title('DFT的幅值-频率图');
    xlabel('频率/HZ');ylabel('幅值');
    grid on

    figure,plot(f,X_fai)
    title('DFT的幅值-相位图');
    xlabel('频率/HZ');ylabel('相位/°');
    grid on
end

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有