作业帮 > 综合 > 作业

matlab对周期信号做傅里叶变换

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/05 14:41:33
matlab对周期信号做傅里叶变换
只是简单的对正弦信号做傅里叶变换,为什么频谱图中出现了两个峰值,而我设定的信号频率是100,以下是我的程序,我想知道怎样能使图中的频率分量出现在-100和+100,还有另外ff(x,n)这个n对于一般周期信号如何选择
fs=2000;%采样频率
N=100;%采样点数
f=100;%信号频率
t=1:N;
x1=sin(2*pi*f*t/fs);
figure(1)
plot(t,x1);
figure(2)
plot(t*(f/fs),x1);
y=fft(x1,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:(length(y)-1))*fs/length(y);%横坐标频率的表达式为f=(0:M-1)*Fs/M;
figure(3)
plot(f,mag);

我画出的频谱是这样的

在“f=(0:(length(y)-1))*fs/length(y);”后面插入一句代码“f=fftshift(f,2)-fs/2;”
在fft变换后,必须做fftshift计算,不然是不对的.
另外,fft(x,n)中,n的取值表示的计算采样点总数.当x长度大于n时,fft计算只取x的前n个数据;当x长度小于n时,fft计算会在x后面补充0以凑够数据.这个n直接决定了fft变换后得到的最小分辨频率.也就是说,观测时间越长,数据越多,能够描述的最低频率越小,这也是符合常理的