我想求出cos(2pi10*n)的fft。我写了这段代码,但它有两个问题。首先,估计的频率不是10hz。第二,根据理论,我期望频率的振幅应该是。我发现振幅取决于fft的大小。谢谢你的帮助。
n = 0:1:9;
x = cos(2*pi*10*n);
xdft = fft(x);
w=0:2*pi/(10):2*pi-2*pi/(10);
plot(abs(xdft) )
你一定忽略了这样一个事实,因为你的信号的频率是10hz,你必须以不低于20hz的频率采样,以免在频谱分析期间出现混叠:
for i=1:4
if i==1
fs=1; %this is the value originally considered in OP's code
elseif i==2
fs=8;
elseif i==3
fs=20;
else
fs=40;
end
n=0:(1/fs):9;
x=cos(2*pi*10*n);
xdft=fft(x);
f=(0:(numel(x)-1))/numel(x)*fs;
subplot(4,1,i);
stem(f,abs(xdft),'.-');
xlabel('Frequency [Hz]');
end