Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-05-28, 09:30   #1
王恰恰
初级会员
 
注册日期: 2009-05-28
年龄: 38
帖子: 2
声望力: 0
王恰恰 正向着好的方向发展
默认 貌似只是一点关于matlab输出格式的问题 求助!

function [PSNR,MSE]=evalue(Im,RecIm)
A=0;
[m,n]=size(Im);
for i=1:m
for j=1:n
A=A+(Im(i,j)-RecIm(i,j))^2;
end
end
a=max(Im);
PSNR=10*log10(m*n*(a^2)/A);
MSE=A/(m*n);
这个M文件的作用是计算原始图像与输出图像的峰值信噪比和均方差,Im是原始图像矩阵,RecIm是处理后重构的图像矩阵,请问这样计算峰值性噪比和均方差对不对?我运行了一下提示有错误,错误如下:
??? Error using ==> mpower
Integer data types are not fully supported for this operation.
Both operands must be scalar.
Error in ==> evalue at 10
PSNR=10*log10(m*n*(a^2)/A);
我刚刚开始运用MATLAB 不是很熟练 请高手帮忙解答 谢谢!
王恰恰 当前离线   回复时引用此帖
旧 2009-05-28, 13:10   #2
zsy312
普通会员
 
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18
zsy312 正向着好的方向发展
默认 回复: 貌似只是一点关于matlab输出格式的问题 求助!

看来一般这里a是数组了,a^2是数组相乘,除非是一维的,否则对不上号。可能你想用a.^2,即每个元素分别相乘,如果没猜错的话。
那个for语句也可以换成:
A=A+(Im-RecIm).^2,当然要求维数一样。
zsy312 当前离线   回复时引用此帖
旧 2009-05-28, 14:18   #3
王恰恰
初级会员
 
注册日期: 2009-05-28
年龄: 38
帖子: 2
声望力: 0
王恰恰 正向着好的方向发展
默认 回复: 貌似只是一点关于matlab输出格式的问题 求助!

这个a是想求出输入图像矩阵数据中峰值 不知道这么求对不对 还请高手再指点指点
王恰恰 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 10:32


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.