2. 对2.jpg利用MatLab工具箱中的函数 (1)编制FFT频谱显示的函数; (2)对图像做FFT并利用自编的函数显示其频谱;
时间: 2024-02-03 14:15:03 浏览: 70
以下是Matlab代码实现:
1. 编制FFT频谱显示的函数
```matlab
function fftplot(x, fs)
% x: input signal
% fs: sampling frequency
N = length(x); % Signal length
X = fft(x)/N; % Normalized FFT
f = (-fs/2:fs/N:fs/2-fs/N); % Frequency vector
Xshift = fftshift(X); % Shift zero frequency component to center
XshiftdB = 20*log10(abs(Xshift)); % Convert amplitude to dB
% Plotting
plot(f,XshiftdB)
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')
grid on
```
2. 对图像做FFT并利用自编的函数显示其频谱
```matlab
% Load image
img = imread('2.jpg');
% Convert to grayscale
img_gray = rgb2gray(img);
% FFT
img_fft = fft2(img_gray);
img_fft_shift = fftshift(img_fft); % Shift zero frequency component to center
img_fft_shift_abs = abs(img_fft_shift); % Calculate magnitude
% Display FFT magnitude
fftplot(img_fft_shift_abs, 1);
```
说明:
- 第一个函数 `fftplot(x, fs)` 是一个用于绘制FFT频谱的函数,其中 `x` 是输入信号, `fs` 是采样频率。
- 第二个代码块中,我们首先读入一张名为 `2.jpg` 的图像,将其转换为灰度图像 `img_gray`,然后对其进行FFT变换,并使用自定义的 `fftplot` 函数绘制频谱图。
阅读全文