![]() |
请帮忙改个错(用lsqcurvefit曲面拟合)
我初学matlab用于拟合曲面
曲面是高斯形式的 但我不会用二维的方法,就把矩阵转化为一维的数组然后用一维的方法做 程序如下 I=imread('E:/011.bmp'); %读取一个图片 J=rgb2gray(I); %将图片转为灰度格式 [m,n]=size(J); reshape(J,1,m*n); %将图片的数据矩阵转化为一维的数组(我初学,不会用二维的,只能这样) a=reshape(J,1,m*n); f=inline('b(1)*exp(-((x-n*floor((x-1)/n)-b(2)).^2+(floor((x-1)/n)+1-b(3)).^2)/b(4)^2)','b','x');%拟合的目标的表达式 x=1:1.0:m*n; y=double(a(x)); [xx,res]=lsqcurvefit(f,[1,1,1,1],x,y); xx',res; 但运行出来后 出现错误 ??? Error using ==> optim\private\lsqncommon User supplied expression or inline function ==> b(1)*exp(-((x-n*floor((x-1)/n)-b(2)).^2+(floor((x-1)/n)+1-b(3)).^2)/b(4)^2) failed with the following error: Error using ==> inlineeval Error in inline expression ==> b(1)*exp(-((x-n*floor((x-1)/n)-b(2)).^2+(floor((x-1)/n)+1-b(3)).^2)/b(4)^2) ??? Error using ==> eval Undefined function or variable 'n'. Error in ==> lsqcurvefit at 149 [x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ... 有高手能帮忙解释下么?能帮忙改正确了就更好了,谢谢了 如果发错了版,请版主帮忙转一下,谢谢 qq 78264997 e-mail [email][email protected][/email] |
你把你的011.bmp 图 发上来,看下,如何?:lol: 你用的那个拟合方法是最小二乘拟合
|
图片就是一个光斑的图片 有点大,我不会上传。主要问题好像是我如果把 f 表达式中的 n 换成一个实际的数 就能得到结果。好像是这个地方出现问题了,希望能解释下
|
回复: 请帮忙改个错(用lsqcurvefit曲面拟合)
怎么没人回答呀,我也要处理这个问题
|
所有时间均为北京时间。现在的时间是 14:06。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.