三维数据拟合问题
已知测试数据:x,y,z 分别是 5 X 9 矩阵,现要在 x,y 平面内绘制 z 的等值线。我的拟合方法是按照下面的方法进行的,不知道是否正确,请高手指点。for index = 1 : 5
xi = x(: , index);
yi = y(: , index);
zi = y(: , index);
% 1、用 x,y 拟合曲线多项式
FX = polyfit(xi,yi,4);
% 2、根据拟合曲线多项式取1000个点的值用于画曲线图
Xi = linspace(min(xi),max(yi),1000); % 得到 1000 个 x 值
Yi = polyval(FX, Xi);% 得到 1000 个 y 值
% 3、用 Xi,Yi 拟合Zi
F = ;
a = F \ zi;
Zi = a(1) + a(2) * Xi + a(3) * Yi; %得到 1000 个 z 值
% 4、将每一行拟合后的数据加入各自的拟合数据矩阵
X = ; % 5 X 1000 矩阵数据
Y = ; % 5 X 1000 矩阵数据
Z = ; % 5 X 1000 矩阵数据
end
% 后面的代码就是用plot 画 X,Y的 平面图,用 contour 画 Z 在X,y平面的等值线图
因为数学基础不好,不知道这样拟合出来的数据是否合理?另外:如何做,使结果是 1000 X 1000 的矩阵数据呢?请指点。
谢谢!
另外:如果 X,Y平面是对数坐标,用 contour 画出来的等值线是正确的吗?
[ 本帖最后由 wgwhl 于 2010-8-6 16:14 编辑 ]
回复 楼主 wgwhl 的帖子
没LZ的原始数据, 不好试LZ的程序!:loveliness:Xi = linspace(min(xi),max(yi),1000);是否有误?
还有试试griddata可否满足LZ需求?
回复 沙发 ChaChing 的帖子
是的,这个地方敲错了,因为源程序变量不是这个,在发帖的时候改成x,y,z了,Xi = linspace(min(xi),max(yi),1000);应为Xi = linspace(min(xi),max(xi),1000);
我已经想到了其他办法,先试试再来这里问吧
页:
[1]