傅里叶变换matlab代码
时间: 2023-11-25 08:47:43 浏览: 103
这段Matlab代码实现了对一张图片进行二维傅里叶变换和逆变换的过程。具体步骤如下:
1. 读取图片并显示;
2. 将彩色图片转换为灰度图像并显示;
3. 对灰度图像进行二维傅里叶变换;
4. 对傅里叶变换结果进行频谱转换并显示;
5. 对傅里叶变换结果进行逆变换并显示。
代码如下:
img=imread('e:/4.jpg');
subplot(2,2,1),imshow(img);
f=rgb2gray(img);
subplot(2,2,2),imshow(f); %二维傅里叶变换
F=fft2(f);
FS=fftshift(F); %频谱
S=log(1+abs(FS));
subplot(2,2,3);imshow(S,[]); %%二维傅里叶逆变换
fr=real(ifft2(ifftshift(FS)));
ret=im2uint8(mat2gray(fr));
subplot(2,2,4),imshow(ret);
相关问题
离散图像傅里叶变换Matlab代码
下面是一个简单的 Matlab 代码,用于计算离散图像的傅里叶变换:
```matlab
% 读取图像
I = imread('image.jpg');
% 将图像转换为灰度图像
I = rgb2gray(I);
% 计算离散傅里叶变换
F = fft2(I);
% 将零频分量移到中心
F = fftshift(F);
% 显示原始图像及其傅里叶变换
subplot(121), imshow(I), title('Original Image');
subplot(122), imshow(log(1+abs(F)), []), title('Fourier Transform');
```
需要注意的是,这里使用 `fft2` 函数计算离散傅里叶变换,并使用 `fftshift` 函数将零频分量移到中心。最后,使用 `imshow` 函数显示原始图像和傅里叶变换结果。
非周期信号傅里叶变换matlab代码
非周期信号傅里叶变换的matlab代码如下:
```matlab
% 定义时间范围和采样率
t = 0:0.001:2;
fs = 1/0.001;
% 定义非周期信号
f = exp(-40*(t-1).^2).*sin(2*pi*5*t);
% 进行傅里叶正变换
F = fft(f);
% 计算频率轴上的频率值
freq = linspace(0, fs, length(f));
% 绘制振幅谱图
plot(freq(1:length(f)/2), abs(F(1:length(f)/2))/length(f));
xlabel('Frequency (Hz)');
ylabel('Amplitude');
```
这段代码中定义了一个非周期信号,采样率为1 kHz。通过调用matlab中的fft函数进行傅里叶正变换,得到信号的频谱。最后,通过绘制振幅谱图来展示信号在不同频率下的振幅。需要注意的是,这里的振幅谱图只展示了频率为0到Nyquist频率(500 Hz)的部分。
阅读全文