声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4621|回复: 5

[编程技巧] 如何求一组数据里最接近某个值的数在哪里

[复制链接]
发表于 2008-11-30 15:37 | 显示全部楼层 |阅读模式

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

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

x
比如采样一个正弦信号
想找到相位 pi/4 的那个点

如果将所有数都减去所求点的值
然后求其绝对值的最小点所在
也可以  但是觉得运算量太大
处理大批数据时太耗费时间

大家帮忙看看有什么更简单的办法
谢谢
回复
分享到:

使用道具 举报

发表于 2008-11-30 19:56 | 显示全部楼层

回复 楼主 ludian 的帖子

你的这个方法对呀。但确实麻烦了点。

如果要改进的话,好像没有什么好的办法了吧。
如果有,也要结合你的系统特点来做了,通性通法大概没有吧。。
发表于 2008-11-30 21:01 | 显示全部楼层
不太确定楼主的需求!
但感觉楼主好像要使用for loop的样子, 这是刚接触matlab易犯的问题

试试 xx=sin(2*pi*[0:0.0001:1]); [c,ind]=min(abs(xx-0.707))
好像不麻烦也不耗费时间!?
发表于 2008-11-30 21:03 | 显示全部楼层
题目没有看懂,可否详细说明
发表于 2008-11-30 23:30 | 显示全部楼层

回复 板凳 ChaChing 的帖子

用这个方法,即使数据量大点应该也很快,这种问题不建议用for循环,呵呵。如果数据没有规律,只能这样了,感觉
 楼主| 发表于 2008-12-1 14:59 | 显示全部楼层

回复 板凳 ChaChing 的帖子

多谢  我只需要序列号就行了 用的是这个
t1 = find ( abs( z1 - sin(1.25*pi)) == min ( abs( z1 - sin(1.25*pi)) ) ) ;
和你这个基本一样吧

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 18:45 , Processed in 0.098088 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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