在 MATLAB 下如何实现对一组数据振幅谱和相位谱

2025-04-13 18:36:28
推荐回答(2个)
回答1:

cl;
img=imread('15.bmp');
%img=double(img);
f=fft2(img); %傅里叶变换
f=fftshift(f); %使图像对称
r=real(f); %图像频域实部
i=imag(f); %图像频域虚部
margin=log(abs(f)); %图像幅度谱,加log便于显示
phase=log(angle(f)*180/pi); %图像相位谱
l=log(f);
subplot(2,2,1),imshow(img),title('源图像');
%subplot(2,2,2),imshow(l,[]),title('图像频谱');
subplot(2,2,3),imshow(margin,[]),title('图像幅度谱');
subplot(2,2,4),imshow(phase,[]),title('图像相位谱');

回答2:

为什么我觉得我以前见过这个问题。。。
数据是x(i),共N个点,采样频率是fsample

dt = 1/fsample
df = 1/N/dt
f = 0:df:(N-1)*df

X=fft(fftshift(x))
plot(f,real(X))
plot(f,imag(X))