matlab 散点拟合三维曲面写出曲面表达式 30
给出一堆三维散点,然后拟合出三维曲面,并用一个多项式函数表达来拟合这个曲面,关键是写出这个函数。用什么命令拟合这个函数呢?...
给出一堆三维散点,然后拟合出三维曲面,并用一个多项式函数表达来拟合这个曲面,关键是写出这个函数。
用什么命令拟合这个函数呢? 展开
用什么命令拟合这个函数呢? 展开
6个回答
展开全部
我现在也是这个情况啊!正是相当纠结呢!在网上看到了这个···
因为这个函数的形式比较特殊,对其两边取对数后得到
log(y)=log(a)+b*log(x1)+c*log(x2)
于是立即就转换为了线性拟合
[1 log(x1) log(x2)]*[log(a) b c]'=log(y)
于是[log(a) b c]'=[1 log(x1) log(x2)]\log(y)
这样就可以得到a,b,c了。不需要进行非线性拟合。
下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你自己在前面加上即可)
p=[ones(length(y),1) log([x1 x2])]\log(y);%就这一句话就搞定了
a=exp(p(1)),b=p(2),c=p(3)%这就是拟合后的参数值
y%这是采样点y的值
a*x1.^b.*x2.^c%这是拟合后在采样点得到的值,可以和y比较一下,很接近
因为这个函数的形式比较特殊,对其两边取对数后得到
log(y)=log(a)+b*log(x1)+c*log(x2)
于是立即就转换为了线性拟合
[1 log(x1) log(x2)]*[log(a) b c]'=log(y)
于是[log(a) b c]'=[1 log(x1) log(x2)]\log(y)
这样就可以得到a,b,c了。不需要进行非线性拟合。
下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你自己在前面加上即可)
p=[ones(length(y),1) log([x1 x2])]\log(y);%就这一句话就搞定了
a=exp(p(1)),b=p(2),c=p(3)%这就是拟合后的参数值
y%这是采样点y的值
a*x1.^b.*x2.^c%这是拟合后在采样点得到的值,可以和y比较一下,很接近
展开全部
为了直观表达我们所求的结果,我们喜欢用图像来表达。对于图像来说分类很多,如散点图,连续图,等高图等等。往往我们习惯把理论图像和模拟图像画在同一个图像,用来区分理论和模拟的吻合程度。
开启分步阅读模式
工具材料:
matlab
操作方法
01
scatter(X,Y,S,C),这是matlab画散点图的命令;这里X,Y是画散点图的数据。 其中S为大小,系统默认大小为50,C表示所画图的颜色。
02
x=1:0.05:10;
.
scatter(x,sin(x),100,'r')
.
.
.
这里通过散点画的是一个sinx 的图像,这里100表示所画图像点的大小,r代表标记散点的颜色。
03
scatter(X,Y)这个是默认画散点图的方法,一切设置按系统默认!X,Y表示散点图的X,Y坐标。下图的命令。
x=1:0.05:10;
scatter(x,cos(x))
04
scatter(X,Y,S) 这里所画的散点图,可以调节对应的大小。也就是说可以通过S这个参数调节标记点的大小。下图是我们将S=1000设置为1000的图像。scatter(...,M)更改标记的图形,默认是圆圈标记。如果需要用其他符号标记可以在这里修改。
scatter(...,'s') ;通过方形标记。
注意别忘了添加单引号。
02
scatter(...,'filled') 通过实心图像来标记。 前面的介绍中,一直是空心符号标记的。
03
scatter3: 立体散点图的画法,具体命令如下。
[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];
S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60)
开启分步阅读模式
工具材料:
matlab
操作方法
01
scatter(X,Y,S,C),这是matlab画散点图的命令;这里X,Y是画散点图的数据。 其中S为大小,系统默认大小为50,C表示所画图的颜色。
02
x=1:0.05:10;
.
scatter(x,sin(x),100,'r')
.
.
.
这里通过散点画的是一个sinx 的图像,这里100表示所画图像点的大小,r代表标记散点的颜色。
03
scatter(X,Y)这个是默认画散点图的方法,一切设置按系统默认!X,Y表示散点图的X,Y坐标。下图的命令。
x=1:0.05:10;
scatter(x,cos(x))
04
scatter(X,Y,S) 这里所画的散点图,可以调节对应的大小。也就是说可以通过S这个参数调节标记点的大小。下图是我们将S=1000设置为1000的图像。scatter(...,M)更改标记的图形,默认是圆圈标记。如果需要用其他符号标记可以在这里修改。
scatter(...,'s') ;通过方形标记。
注意别忘了添加单引号。
02
scatter(...,'filled') 通过实心图像来标记。 前面的介绍中,一直是空心符号标记的。
03
scatter3: 立体散点图的画法,具体命令如下。
[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];
S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
close all; clc
data = load(‘C:\Users\temp\Downloads\APA数据处理\APA检车位数据垂直.txt’);
speed = data(:,4);
distanceY = data(:,6);
Dvalue = data(:,8);
% 绘制散点图
figure(1),plot3(speed,distanceY,Dvalue,’*’);
xlabel(‘CARSpeed’);
ylabel(‘distanceY’);
zlabel(‘Dvalue’);
title(‘平行库位长度误差与速度及侧向距离相关图’)
hold on
% 对散点图进行曲面拟合寻找规律
[X,Y,Z]=griddata(speed,distanceY,Dvalue,linspace(min(speed),max(speed))’,linspace(min(distanceY),max(distanceY)),‘v4’);
figure(2),surf(X,Y,Z);
xlabel(‘CARSpeed’);
ylabel(‘distanceY’);
zlabel(‘Dvalue’);
title(‘平行库位长度误差与速度及侧向距离关系曲面拟合’)
data = load(‘C:\Users\temp\Downloads\APA数据处理\APA检车位数据垂直.txt’);
speed = data(:,4);
distanceY = data(:,6);
Dvalue = data(:,8);
% 绘制散点图
figure(1),plot3(speed,distanceY,Dvalue,’*’);
xlabel(‘CARSpeed’);
ylabel(‘distanceY’);
zlabel(‘Dvalue’);
title(‘平行库位长度误差与速度及侧向距离相关图’)
hold on
% 对散点图进行曲面拟合寻找规律
[X,Y,Z]=griddata(speed,distanceY,Dvalue,linspace(min(speed),max(speed))’,linspace(min(distanceY),max(distanceY)),‘v4’);
figure(2),surf(X,Y,Z);
xlabel(‘CARSpeed’);
ylabel(‘distanceY’);
zlabel(‘Dvalue’);
title(‘平行库位长度误差与速度及侧向距离关系曲面拟合’)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A=[w];%x,y,z轴坐标
x=A(:,1);y=A(:,2);z=A(:,3);
scatter3(x,y,z)%散点图
figure
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z);%三维曲面
x=A(:,1);y=A(:,2);z=A(:,3);
scatter3(x,y,z)%散点图
figure
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z);%三维曲面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab里面regress可以实现这个命令。或者你可以采用polynomial
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询