马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
已知测试数据: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 = [ones(size(zi)), xi, yi];
- a = F \ zi;
- Zi = a(1) + a(2) * Xi + a(3) * Yi; % 得到 1000 个 z 值
- % 4、将每一行拟合后的数据加入各自的拟合数据矩阵
- X = [X; Xi]; % 5 X 1000 矩阵数据
- Y = [Y; Yi]; % 5 X 1000 矩阵数据
- Z = [Z; Zi]; % 5 X 1000 矩阵数据
- end
- % 后面的代码就是用 plot 画 X,Y的 平面图,用 contour 画 Z 在X,y平面的等值线图
复制代码 因为数学基础不好,不知道这样拟合出来的数据是否合理?另外:如何做,使结果是 1000 X 1000 的矩阵数据呢?请指点。
谢谢!
另外:如果 X,Y平面是对数坐标,用 contour 画出来的等值线是正确的吗?
[ 本帖最后由 wgwhl 于 2010-8-6 16:14 编辑 ] |