xsunrain
2008-06-17, 15:13
我初学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]
曲面是高斯形式的 但我不会用二维的方法,就把矩阵转化为一维的数组然后用一维的方法做 程序如下
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]