通信人家园
标题:
关于《MATLAB 7.0从入门到精通》(求是科技 编著)一处代码实例运行错误的解决方法
[查看完整版帖子]
[打印本页]
时间:
2014-3-9 16:06
作者:
jackierr
标题:
关于《MATLAB 7.0从入门到精通》(求是科技 编著)一处代码实例运行错误的解决方法
《MATLAB 7.0从入门到精通》(求是科技 编著)是一本MATLAB学习的入门书籍,全篇通俗易懂。最近学习到222-223页,关于使用fft2()函数处理图像。其中的示例如下:
%fft2_example.m
%分析图像的频谱
img = imread(’coins.png’); %读图像文件
f_img = fft2(double(img)); %二维fft变换
f_img = fftshift(f_img); %把直流成分移动频谱的中间
imshow(img); %显示图像
figure;
f_img_abs = abs(f_img); %得到频谱幅度
f_img_abs = (f_img_abs-min(min(f_img_abs)))./ .. . %把频谱幅度变换到[0,255]范围内
(max(max(f_img_abs))-min(min(f_img_abs)))*255;
imshow(f_img_abs); %显示频谱幅度
title(’图像的幅频分布’);
在运行到
f_img_abs = (f_img_abs-min(min(f_img_abs)))./ (max(max(f_img_abs))-min(min(f_img_abs)))*255;
出现如下错误:
Array dimensions must match for binary array op
发现是
f_img_abs-min(min(f_img_abs))中维度的匹配问题。于是,对代码做出如下修改:
%fft2_example.m %分析图像的频谱
img = imread('C:\Users\ljj\Desktop\coin.jpg'); %读图像文件f_img = fft2(double(img)); %二维fft变换f_img = fftshift(f_img); %把直流成分移动频谱的中间imshow(img); %显示图像
figure; f_img_abs = abs(f_img); %得到频谱幅度
f_min=min(min(f_img_abs));f_max=max(max(f_img_abs));for i=1:3%把频谱幅度变换到[0,255]范围内 f_img_abs(:,:,i) = (f_img_abs(:,:,i)-f_min(i))./(f_max(i)-f_min(i))*255;end;
imshow(f_img_abs); %显示频谱幅度title('图像的幅频分布');
运行之后正常,如下是运行结果:
图一 原始图片
图二 图片的幅频分布
通信人家园 (https://www.txrjy.com/)
Powered by C114