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 !!!
求大神讲解 展开
%%%% 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 !!!
求大神讲解 展开
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都是一次性赋值的。这同样是警告。
希望采纳,设置为满意答案,谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询