通信人家园

标题: 关于《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