声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 优姬

[综合讨论] 已知公路坐标,如何求公路总长?[请详解]

[复制链接]
发表于 2008-12-30 09:04 | 显示全部楼层

回复 15楼 leeking30 的帖子

恩,我理解是采用不同的拟合方式,比如线性拟合、二次拟合、样条拟合。
回复 支持 反对
分享到:

使用道具 举报

发表于 2008-12-30 09:39 | 显示全部楼层
嘿嘿, 我只在乎自己会不会, 觉得好玩就做做看!
到底如何估计公路长度?

[ 本帖最后由 ChaChing 于 2008-12-30 10:05 编辑 ]
发表于 2008-12-30 11:13 | 显示全部楼层

回复 17楼 ChaChing 的帖子

线性插值的话,就是每两个点都用直线连接,那公路的长度就是每两个点之间的距离的和——这是最简单、最粗糙的一种估计;如果采用二次或三次插值的话,就需要根据拟合公式来计算曲线的长度了,弧长微元的长度ds=sqrt(1+y'^2)*dx,再对它积分。

评分

1

查看全部评分

发表于 2008-12-30 15:08 | 显示全部楼层

回复 18楼 sogooda 的帖子

好像是不能使用interp1函数, 因这例子并非y(x)类型函数!?
所以亦无法得到y'=dy/dx
发表于 2008-12-30 15:41 | 显示全部楼层
好像想太多了! 简单就好了
clc; clear
x=[ 0  30  50  70  80  90 120 148 170 180, 202 212 230 248 268 271 280 290 300 312, ...
  320 340 360 372 382 390 416 430 478 440, 420 380 360 340 320 314 280 240 200];
y=[80  64  47  42  48  66  80 120 121 138, 160 182 200 208 212 210 200 196 188 186, ...
  200 184 188 200 202 240 246 280 296 308, 334 328 334 346 356 360 392 390 400];
n=length(x); nn=[1:0.1:length(x)];
xx = interp1([1:n],x,nn,'spline'); yy = interp1([1:n],y,nn,'spline');
plot(x,y,'o',xx,yy); grid on;
leng1=sum( sqrt((x(2:end)-x(1:end-1)).^2+(y(2:end)-y(1:end-1)).^2) );
leng2=sum( sqrt((xx(2:end)-xx(1:end-1)).^2+(yy(2:end)-yy(1:end-1)).^2) );
[leng1,leng2]

[ 本帖最后由 ChaChing 于 2008-12-30 15:43 编辑 ]

评分

1

查看全部评分

发表于 2008-12-30 18:27 | 显示全部楼层

回复 19楼 ChaChing 的帖子

精确的y'是无法知道的,但是样条曲线的y'是可以知道的。不过,像20楼那样采用非常小间隔的直线来替代弧线应该也是可以的,而且可以省去很多麻烦。

[ 本帖最后由 sogooda 于 2008-12-30 18:37 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 23:27 , Processed in 0.070373 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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