function [t1,t2]= untitled2(img0) img=imread(img0); if size(img)>2 I=rgb2gray(img); else I=img; end [m,n]=size(I);%图像的尺寸 counts=m*n;%像素总数 count=imhist(I);%求直方图 p=count/counts;%各个像素概率 w1=cumsum(p);%累计像素概率 u=cumsum(p.*(1:256)'); u_end=u(end);%u_end是全局平均灰度 d=(w1*u_end-u).^2./(w1.*(1-w1)); [x,y]=max(d);%返回最大方差和位置 t1=(y-1)/255;%自定义所得阈值 t2=graythresh(I);%graythresh计算出的阈值 subplot(2,2,1),imshow(I);title('灰度图像'); subplot(2,2,2),imhist(I);title('灰度直方图'); subplot(2,2,3),im2bw(I,t1);title('自定义函数图像'); subplot(2,2,4),im2bw(I,t2);title('graythresh图像'); disp(['自定义函数:t1=', num2str(t1)]); disp(['OTSU算法:t2=', num2str(t2)]); end上述代码为什么输出ans能帮我看一下哪里变量没有定义
时间: 2023-11-20 13:05:59 浏览: 145
Untitled.rar_Untitled_butterworth order 2_二阶滤波器
在你调用函数时,如果将函数的输出值直接输出到命令窗口中,Matlab会自动将函数的输出值赋值给变量"ans",并输出到命令窗口中。因此,当你调用该函数时,如果直接输入函数名,则会输出变量"ans"的值,而不是函数的输出值。
为了解决这个问题,你需要在调用函数时,使用一个变量来接收函数的输出值,例如:
```
[t1, t2] = untitled2('C:\Users\樱桃小丸子\Pictures\Saved Pictures\背景1.png');
```
在上述代码中,将函数的输出值分别赋值给变量"t1"和"t2",这样就可以避免输出变量"ans"的值。
另外,你在函数的最后几行使用了disp函数输出t1和t2的值,这样就可以在函数运行结束后,直接输出t1和t2的值,而不必再在命令窗口中查看变量"ans"的值了。如果你仍然看到了变量"ans"的值,可能是因为你在调用函数时,没有将函数的输出值赋值给任何变量,或者是在函数中有其他地方使用了未定义的变量。
阅读全文