这里的x是16行,1024列的数据。 


clc;clear all;close all;

fs=1000;

f0=10;

f1=20;

f2=30;

f3=40;


ts=1/fs;

t=0:ts:1023*ts;

x0 = cos(2*pi*f0*t);

x1 = cos(2*pi*f1*t);

x2 = cos(2*pi*f2*t);

x3 = cos(2*pi*f3*t);


mat1 = zeros(16,1024);


tem = [x0 ;x1 ;x2; x3];

mat1 = [tem;tem;tem;tem];


mat1_fft = fft(mat1,[],2);

figure;

plot(abs(mat1_fft(1,:))); %能画出一个频率点,说明上面是把矩阵中的一行作为一次采样点。  

title('信号频谱');



mat1_fft2 = fft(mat1,[],1);

delta = abs(mat1_fft2(:,1) - fft(mat1(:,1)));

figure;

plot(delta);

title('差值');


总结: 

fft(x,[],1), 是把每列做fft,做完之后,还放到原来的列上。 

fft(x,[],2), 是把每行做fft,做完之后,还放到原来的行上。