声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1681|回复: 9

[编程技巧] 麻烦论坛的朋友帮忙看看这个插值程序

[复制链接]
发表于 2008-9-24 09:39 | 显示全部楼层 |阅读模式

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

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

x
我想获得过原插值点的曲线,迭代时程序有问题,总是改不好,请教论坛的朋友,帮帮忙,谢谢! 原理在附件1、2里
clear all; x=0:10; y=[1,5,3,5,6,2,8,9,4,6,7];%初始点(xi,yi)
plot(x,y); hold on; n=length(y);
%变换参数
xl=x(n)-x(1); yl=y(n)-y(1); d=rand(1,n); a=(x(2:n)-x(1:n-1))/xl;
c=(y(2:n)-y(1:n-1))/xl-d(2:n)*(yl/xl); e=(x(n)*x(1:n-1)-x(1)*x(2:n))/xl;
f=(x(n)*y(1:n-1)-x(1)*y(2:n))/xl-d(2:n)*((x(n)*y(1)-x(1)*y(n))/xl);
%迭代运算
for i=1:n-1
    x=a(i)*x+e(i); y=c(i)*x+d(i)*y+f(i);
    plot(x,y,'*r'); hold on
end

论坛高手们,帮帮忙吧,闷了几天了,做了很多改动,还是不行,谢谢大家!

[ 本帖最后由 ChaChing 于 2010-7-5 13:33 编辑 ]
zzaa.JPG
zzaa2.JPG
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-9-24 22:12 | 显示全部楼层
修改了,还是不行
%迭代运算
k=20;%迭代次数
for kk=1:k
    for i=2:n-1;
    m=ceil(a(i)*x(i)+e(i));   
    y(m)=c(i)*x(i)+d(i)*y(i)+f(i);
    end
end
plot(y,'-r');
求助.jpg
发表于 2008-9-24 23:45 | 显示全部楼层
我的结果是这样的

原帖由 zhly 于 2008-9-24 09:39 发表
我想获得过原插值点的曲线,迭代时程序有问题,总是改不好,请教论坛的朋友,帮帮忙,谢谢!
原理在附件1、2里
clear all
x=0:10;
y=[1,5,3,5,6,2,8,9,4,6,7];%初始点(xi,yi)
plot(x,y);
hold on
n=length( ...


a1.png
 楼主| 发表于 2008-9-25 08:50 | 显示全部楼层
按照附件中的方法,最终结果插值点之间是曲线,可否把程序贴出来?
发表于 2008-9-25 09:54 | 显示全部楼层
原帖由 zhly 于 2008-9-25 08:50 发表
按照附件中的方法,最终结果插值点之间是曲线,可否把程序贴出来?


线性插值是直线,2次、3次、样条就是曲线老
 楼主| 发表于 2008-9-25 10:22 | 显示全部楼层
原帖由 yelv123 于 2008-9-25 09:54 发表


线性插值是直线,2次、3次、样条就是曲线老


我不是做样条插值
做线性分形插值
现在不能解决的问题是:在迭代时怎么能保留得到的新点的同时不覆盖原始点。
发表于 2008-9-25 10:27 | 显示全部楼层
这个分形的就不清楚了~~~
 楼主| 发表于 2008-9-25 10:30 | 显示全部楼层
我在附件里贴了原理,能否帮忙看看?
 楼主| 发表于 2008-10-15 19:41 | 显示全部楼层

更正一下前面问题描述中的错误,希望热心的朋友指导一下

附件中是线性分形插值的基本原理,得到的图形在点与点之间还是线性的,只是经分形插值后在原插值点之间产生了新点。
问题是:在迭代时怎么能保留得到的新点的同时不覆盖原插值点?
发表于 2010-7-5 11:48 | 显示全部楼层
无意中看到这个问题。

其实,用3次B样条等曲线插值算法可以轻松实现啊。

也许,楼主早就解决了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 15:44 , Processed in 0.063181 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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