Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-06-17
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
我初学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 protected] |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
你把你的011.bmp 图 发上来,看下,如何?:lol: 你用的那个拟合方法是最小二乘拟合
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-06-17
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
图片就是一个光斑的图片 有点大,我不会上传。主要问题好像是我如果把 f 表达式中的 n 换成一个实际的数 就能得到结果。好像是这个地方出现问题了,希望能解释下
|
![]() |
![]() |
![]() |
#4 |
游客
帖子: n/a
|
![]()
怎么没人回答呀,我也要处理这个问题
|
![]() |