%傅里叶变换与反变换% 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 21:58:17 浏览: 106
dft.rar_DFT_DFT FORTRAN_傅立叶反变换_功率谱计算_谐波激励法
根据错误提示,矩阵维度必须一致,即两个矩阵的大小必须相同才能进行数组乘法运算。在这个问题中,可能是因为 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));
```
这样就可以避免矩阵维度不一致的错误了。
阅读全文