matlab 中总是出错

functionAVEGRAD=avegrad(img)%%%%thisfunctionisusedtocalculatetheaveragegradientofanim... function AVEGRAD=avegrad(img)
%%%% this function is used to calculate theaverage gradient of an image.
%%%%平均梯度可敏感地反映图像对微小细节反差表达的能力,可用来评价图像的模糊程度
%%%%在图像中,某一方向的灰度级变化率大,它的梯度也就大。因此,可以用平均梯度值来衡量图像的清晰度,还同时反映出图像中微小细节反差和纹理变换特征。
img=double(img);
[M,N]=size(img);
gradval=zeros(M,N); %%% save the gradient value of single pixel
diffX=zeros(M,N); %%% save the differential value of X orient
diffY=zeros(M,N); %%% save the differential value of Y orient
tempX=zeros(M,N);
tempY=zeros(M,N);
tempX(1:M,1:(N-1))=img(1:M,2:N);
tempY(1:(M-1),1:N)=img(2:M,1:N);
diffX=tempX-img;
diffY=tempY-img;
diffX(1:M,N)=0; %%% the boundery set to 0
diffY(M,1:N)=0;
diffX=diffX.*diffX;
diffY=diffY.*diffY;
AVEGRAD=(diffX+diffY)/2;
AVEGRAD=sum(sum(sqrt(AVEGRAD)));
AVEGRAD=AVEGRAD/((M-1)*(N-1));
end

gradval=zeros(M,N); diffX=zeros(M,N); diffY=zeros(M,N);
这三个地方总是提示说the value assigned to the variable should be unused !!!
求大神讲解
展开
 我来答
guigui134567
2015-07-12 · TA获得超过100个赞
知道答主
回答量:65
采纳率:0%
帮助的人:104万
展开全部
  1. gradval=zeros(M,N);

提示:the value assigned to the variable should be unused .

是因为后面你没有用到它,但是程序在执行中会生成这个变量,占据时间和空间,所以它提示你。这种是警告,不是错误,对程序结果没影响。

2.diffX=zeros(M,N); diffY=zeros(M,N);
提示:没必要的预分配。

在后续程序中,你的diffX diffY并没有逐渐扩展它的长度,所以你没必要预分配。

你的diffX diffY都是一次性赋值的。这同样是警告。

希望采纳,设置为满意答案,谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式