%傅里叶变换与反变换% clc;clear;close all I=imread('C:\Users\dell\Pictures\微信图片_20230516102725.jpg '); I=rgb2gray(I); figure(1); subplot(231); imshow(I); title('原图像'); H=fft2(I); HH=abs(fftshift(H)); subplot(232); imshow(log(1+HH),[]) title('幅度谱'); ang=angle(H); subplot(233); imshow(ang,[]); title('相位谱'); I_man=imread('C:\Users\dell\Pictures\微信图片_20230524091841.jpg'); I_man=rgb2gray(I_man); subplot(234); imshow(I_man); title('原图像'); H_man=fft2(I_man); HH_man=abs(fftshift(H_man)); subplot(235); imshow(log(1+HH_man),[]) title('幅度谱'); ang_man=angle(H_man); subplot(236); imshow(ang_man,[]); title('相位谱'); figure(2); Hamp=abs(H); lamp=real(ifft2(Hamp)); subplot(221); imshow(log(1+lamp),[]); title('由Lena幅度谱重建的结果'); Hang=complex(cos(ang),sin(ang)); lang=real(ifft2(Hang)); subplot(222); imshow(lang,[]); title('由Lena相位谱重建的结果'); mix=complex(Hamp.*cos(ang_man),Hamp.*sin(ang_man)); lamp=real(ifft2(mix)); subplot(223); imshow(lamp,[]); title('Lena幅度、Cameraman香味重建的结果'); Hamp_man=abs(H_man); mix=complex(Hamp_man.*cos(ang),hamp_man.*sin(ang)); lang=real(ifft2(mix)); subplot(224); imshow(lang,[]); title('Cameraman幅度、Lena香味重建的结果');报错错误使用 .* 矩阵维度必须一致。 出错 Untitled27 (line 52) mix=complex(Hamp.*cos(ang_man),Hamp.*sin(ang_man));该怎么解决
时间: 2024-02-23 07:58:16 浏览: 9
根据错误提示,矩阵维度必须一致,即两个矩阵的大小必须相同才能进行数组乘法运算。在这个问题中,可能是因为 Hamp 和 ang_man 的大小不同,导致无法进行数组乘法运算。
可以尝试使用 imresize 函数将 Hamp 和 ang_man 调整为相同的大小,然后再进行数组乘法运算。具体方法如下:
```matlab
Hamp_man = abs(H_man);
Hamp_resized = imresize(Hamp_man, size(Hamp));
mix = complex(Hamp_resized.*cos(ang_man), Hamp_resized.*sin(ang_man));
lamp = real(ifft2(mix));
```
同样的,也需要将 Hamp_man 和 ang 调整为相同的大小,然后再进行数组乘法运算。具体方法如下:
```matlab
Hamp_man_resized = imresize(Hamp_man, size(Hamp));
mix = complex(Hamp_man_resized.*cos(ang), Hamp_man_resized.*sin(ang));
lang = real(ifft2(mix));
```
这样就可以避免矩阵维度不一致的错误了。
相关问题
j=fft2(i); %傅里叶变换 什么意思
这行代码是对灰度图像i进行二维离散傅里叶变换(DFT),得到的结果是一个复数矩阵j,其中每个元素都是一个复数,表示对应频率下的振幅和相位信息。DFT是一种将时域信号转换为频域信号的技术,它可以将信号分解成不同频率的正弦波组成的复合波,因此可以用于频谱分析、滤波、压缩等应用。在图像处理中,DFT常用于频域滤波、图像复原、图像增强等方面。
补全代码:clear;clc % 读取图像文件 img = imread('Lena01.bmp'); img =imresize(img,0.2); % 显示原始图像 subplot(2, 2, 1); imshow(img); title('Original Image'); % 计算傅里叶变换 f = double(img); F = zeros(size(f)); [M, N] = size(f); for u = 0:M-1 for v = 0:N-1 for x = 0:M-1 for y = 0:N-1 end end end end % 显示傅里叶变换后的图像 subplot(2, 2, 2); imshow(log(1+abs(F)), []); title('Fourier Transform'); % 计算傅里叶逆变换 f2 = zeros(size(f)); for x = 0:M-1 for y = 0:N-1 for u = 0:M-1 for v = 0:N-1 end end end end
补全代码如下:
clear;clc % 读取图像文件
img = imread('Lena01.bmp');
img =imresize(img,0.2);
% 显示原始图像
subplot(2, 2, 1);
imshow(img);
title('Original Image');
% 计算傅里叶变换
f = double(img);
F = zeros(size(f));
[M, N] = size(f);
for u = 0:M-1
for v = 0:N-1
for x = 0:M-1
for y = 0:N-1
F(u+1, v+1) = F(u+1, v+1) + f(x+1, y+1) * exp(-2j*pi*((u*x/M)+(v*y/N)));
end
end
end
end
% 显示傅里叶变换后的图像
subplot(2, 2, 2);
imshow(log(1+abs(F)), []);
title('Fourier Transform');
% 计算傅里叶逆变换
f2 = zeros(size(f));
for x = 0:M-1
for y = 0:N-1
for u = 0:M-1
for v = 0:N-1
f2(x+1, y+1) = f2(x+1, y+1) + F(u+1, v+1) * exp(2j*pi*((u*x/M)+(v*y/N)));
end
end
end
end
% 显示傅里叶逆变换后的图像
subplot(2, 2, 3);
imshow(uint8(f2));
title('Inverse Fourier Transform');
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)