将轨迹进行采样(256点)并存在数组中(200分)

  • 主题发起人 主题发起人 bihu
  • 开始时间 开始时间
B

bihu

Unregistered / Unconfirmed
GUEST, unregistred user!
用鼠标在画布上画出轨迹,怎样将轨迹进行采样(256点)并存在数组中?
最好能附段可用的程序!
 
只能256点吗?
1)先在mousemove事件中记录所有点坐标

2) while 点的个数(sum)>256 do
begin
for i:=1 to sum do
if 前三点的导数变化率(曲折度)<某个确定值Q then
begin
把第二个以后所有点前移,从而滤掉中间的点;
if 点的个数(sum)<=256 then
break;
end;
q:=q-0.01;
end
3)前三点的导数变化率大概是
((y1-y2)/(x1-x2)-(y2-y3)/(x2-x3))/(x1-x3)
4)如果开始点的数目不够,可以在后面用最后一个点
补齐
 
你怎么用鼠标画的,轨迹是什么样的?把程序贴出来,让大家看一下什么轨迹.
 
bihu:
导数变化率(曲折度)也可以用三点所成的折线之间的
夹角来表示。
 
他好象只是要对模拟得到的信号采样,可能不需要导数变化率.
To bihu:
是要等间隔采样吗?
 
kang:
我从他的原文上看好象是要把多轨迹点压缩到256点,且最大
保留轨迹的“形状”,所以肯定不是“等间隔”采样,关键是如何
“不等间隔”采样。如果真是“等间隔”,那统计有多少点,然后
算一下每格多少点”采样“即可了。
我们还是看一看bihu怎么说吧。
 
是要等间隔采样
 
等间隔采样,间隔指的是什么?
前面的回答对不对?
 
To g622
我猜bihu是学电子的.因为我也是学电子的,所以猜是等间隔.
To bihu:
能把你的画图程序告诉我吗?我知道画的轨迹特点,才能写采样程序.
 
学电子的:
我是电子系的。
 
我们是同行,呵呵呵
 
关键是能得到轨迹上的点位置吗??
 
等间隔采样应该很简单,只是时间可能要长一些.对时间有要求吗?
 
bihu:
您可是金口难开啊.
 
难得大家这么热心,谢谢!
是这样:我们要用鼠标画出任意波,
采样256点后存在数组中,
写入6116芯片中,
再输出到示波器上.
 
开个窗口,画好坐标,当然是等间隔的,
然后嘛,在间隔上取出轨迹的纵坐标不就行了。
 
不知你是否用过MATLAB,MATLAB中有很多函数可以进行插值和采样。如:interp,interp1,spline等等。你可以参考一下。
另外如果你是用C++(VC或BC)的话,则可以直接调用MATLAB函数。
你可以到http://www.mathtools.com去下载相应的库函数
 
bihu:给你发了个例子,没有验证,供参考
 
多人接受答案了。
 
后退
顶部