声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3374|回复: 5

[绘图技巧] 关于用matlab作趋势面分析

[复制链接]
发表于 2009-9-18 16:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想用matlab作个趋势面分析,但在matlab中用下列代码没有生成想要的一次、二次、三次趋势面拟合等值线,请各位指点,万分感激:@)

Matlab趋势面分析.txt

3.83 KB, 下载次数: 24

回复
分享到:

使用道具 举报

发表于 2009-9-19 11:31 | 显示全部楼层
建议楼主直接贴出代码, 不然像个人就无法读取(有些会变乱码)!
 楼主| 发表于 2009-9-19 12:00 | 显示全部楼层

我把代码直接贴出来哈

%---c6fun6_10
Clear;clc;
X=[];
Y=[];
U=[];
alpha=0.01;
disp(‘一次趋势面拟合');
X0=ones(length(X),1);
X1=X’;X2=Y’;XX1=[X0;X1,X2];yy=U’;
[A1,bint1,r1,rint1,stats1]=regress(yy,XX1,alpha)
UU=A1(1)+A1(2)*X1+A1(3)*X2;
R1=sum((UU-mean(U)). ^2)/sum((U-mean(U)). ^2)
xxx=1:1:96;yyy=1:1:96;
[XXX,YYY]=meshgrid(xxx,yyy);
figure(1);
[c1,h1]=contour(XXX,YYY,UUU,8);clabel(c1,h1);title(‘一次趋势面拟合');
xlabel(‘X/m’);ylabel(‘y/m’);hold on;
plot(X,Y,/bp/);for ii=1:1:length(X);text(X(ii)),Y(ii),num2str(U(ii));end
disp(‘二次趋势面拟合');
X3=X’.*X’;X4=X’. *Y’;X5=Y’.*Y’;XX2=[X0,X1,X2,X3,X4,X5];
[A2,bint2,r2,rint2,stats2]=regress(yy,XX2,alpha)
UU=A2(1)+A2(2)*X1+A2(3)*X2+A2(4)*X3+A2(5)*X4+A2(6)*X5;
R2=sum((UU-mean(U)).^2)/sum((U-mean(U)).^2
xxx=1:1:96;yyy=1:1:96
[XXX,YYY]=meshgrid(xxx,yyy);
UUU=A2(1)+A2(2)*XXX+A2(3)*YYY+A2(4)*XXX.^2+A2(5)*XXX.*YYY+A2(6)*YYY.^2;
figure(2);
[c2,h2]=contour(XXX,YYY,UUU,8,‘b-.');clabel(c2,h2);title(‘二次趋势面拟合');
xlabel(‘X/m’);ylabel(‘y/m’);hold on;
plot(X,Y, ‘bp’);for ii=1:1:length(X);text(X(ii),Y(ii),num2str(U(ii)));end
disp(‘三次趋势面拟合');
X6=X’.*X’.*X’;X7=X’.*X’.*Y’;X8=X’.*Y’.*Y’;X9=Y’.*Y’.*Y’;
XX3=[X0,X1,X2,X3,X4,X5,X6,X7,X8,X9];
[A3,bint3,r3,rint3,stats3]=regress(yy,XX3,alpha)
UU=A3(1)+A3(2)*X1+A3(3)*X2+A3(4)*X3+A3(5)*X4+A3(6)*X5+A3(7)*X6+A3(8)*X7+A3(9)*X8+A3(10)*X9;
R3=sum((UU-mean(U)).^2)/sum((U-mean(U)).^2)
Xxx=1:1:96;yyy=1:1:96;
[XXX,YYY]=meshgrid(xxx,yyy);
UUU=A3(1)+A3(2)*XXX+ A3(3)*YYY+ A3(4)*XXX.*XXX+ A3(5)*XXX.*YYY+ A3(6)*YYY.*YYY+A3(7). *XXX.^3+A3(8).*XXX.*XXX.*YYY+A3(9).*XXX.*YYY.*YYY+A3(10).*YYY.*YYY.*YYY;
figure(3);[c3,h3]=contour(XXX,YYY,UUU,8,‘b’: /);clabel(c3,h3);
title(‘三次趋势面拟合’);xlabel(‘X/m’);ylablel(‘y/m’);
hold on;plot(X,Y, ‘bp’);for ii=1:1:length(X);text(X(ii),Y(ii),num2str(U(ii)));end

上边X=[]; Y=[];U=[];里边的值因为太多了,所以在这就删了
哪位可以指点一下,是我的代码错了还是操作上的错误,谢谢

[ 本帖最后由 ChaChing 于 2009-9-19 23:55 编辑 ]
发表于 2009-9-22 08:42 | 显示全部楼层
之前没空看, 今稍为看下!
抱歉, 真的有点受不了LZ的代码! 格式错了一大堆!
建议LZ需自个儿先练练改改看, 成熟些具体再讨论
发表于 2011-4-5 17:21 | 显示全部楼层
请问lz现在有正确的代码了吗?
发表于 2011-4-6 19:28 | 显示全部楼层
如果画出图形就好理解了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 07:55 , Processed in 0.058016 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表