matlab dtft的函数,DTFT的Matlab矩阵计算的理解

其实是早应该想到的,今天写程序的时候想到了。然后,跟同学说起来,说,原来国外的教材很多都是矩阵的形式来表示离散傅里叶变换的。但是国内的教材没有这么表达。

一个是,自己看的东西还是少了,一个是,matlab本来应该是混饭吃的东西,用的也不熟,理解还欠很多,另外一个是,对于线性代数,矩阵,的理解还真是浅薄。这么有用的东西,自己还是应该抽空看看的。

对于x[n]的离散时间傅里叶变换

离散时间傅里叶变换

对于N点序列,离散傅里叶变换

离散傅里叶变换

可以看到,先是乘法,然后是求和。很容易想到,对于矩阵的乘法,就是先一行乘以一列,再把各个值相加,为一项的值,再去做下一步。

到最后需要得到的是一个1xN(或1xW)的矩阵,所以矩阵乘法中,左边的应该是一个一行的矩阵,为x[n],exp中,需要得到一个NxN(或者NxW)的矩阵,由,nk得到,形式为n’*w。

clc;

fs=100; %采样频率

N=128; %数据点数

n=0:N-1;

t=n/fs; %时间序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号

%此处x[n],就是需要的输入的序列

%注意,matlab标号从一开始,所以需要有n+1

w=[0:999]

%w为一千个点,在这里相当于,w是连续的,若w的数量等于N,则就是N点的DFT。

y=x(n+1)*exp(-j*2*pi/N*n'*w)

%y[w]即傅里叶变换系数

你可能感兴趣的:(matlab,dtft的函数)