声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4617|回复: 15

[图像处理] 如何从曲线上读出任一点的坐标?

[复制链接]
发表于 2006-9-11 17:55 | 显示全部楼层 |阅读模式

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

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

x
想从曲线上得到尖峰对应的频率,利用下面语句可以得到最高的尖峰对应的频率,第二个高的尖峰对应的频率如何得到呢?谢谢!
index=find(power(1:floor(n/2-1))==max(power(1:floor(n/2-1))));
s=num2str(sprintf('%5.1f Hz',freq(index)));
plot(freq(index),power(index),['*','r']);
111111111111.jpg
回复
分享到:

使用道具 举报

发表于 2006-9-11 18:51 | 显示全部楼层
用分区间的方法不知道可不可以
发表于 2006-9-11 19:12 | 显示全部楼层
好好
发表于 2006-9-11 19:27 | 显示全部楼层
用ginput命名可以读出图上坐标。

评分

1

查看全部评分

 楼主| 发表于 2006-9-11 20:07 | 显示全部楼层
谢谢了!

[ 本帖最后由 lcw 于 2006-9-11 20:19 编辑 ]
发表于 2006-9-13 21:01 | 显示全部楼层
如果lcw要的是图中曲线上任意一点的精确值,那么我对realhappy的回答有些疑义:
ginput命名可以读出图上坐标吗?
ginput给出的是自己鼠标点击点的坐标,未必是图上的坐标(我指的是曲线部分),其值根本不精确!
即使用鼠标点中该点,但是用plot画出的图,并不是所有定义域内的点所构成的图,只是有限点连接所成,所以未必就是准确值。
我认为只有根据函数算出的数才精确。
发表于 2006-9-13 22:10 | 显示全部楼层
用data cursor

评分

1

查看全部评分

发表于 2006-9-14 09:06 | 显示全部楼层
原帖由 yukeyyxh 于 2006-9-13 21:01 发表
如果lcw要的是图中曲线上任意一点的精确值,那么我对realhappy的回答有些疑义:
ginput命名可以读出图上坐标吗?
ginput给出的是自己鼠标点击点的坐标,未必是图上的坐标(我指的是曲线部分),其值根本不精确 ...

那是不得已而为之的手段,有函数还用去找图上的坐标吗?
 楼主| 发表于 2006-9-14 09:25 | 显示全部楼层
原帖由 yukeyyxh 于 2006-9-13 21:01 发表
如果lcw要的是图中曲线上任意一点的精确值,那么我对realhappy的回答有些疑义:
ginput命名可以读出图上坐标吗?
ginput给出的是自己鼠标点击点的坐标,未必是图上的坐标(我指的是曲线部分),其值根本不精确 ...



这个怎么用啊?
试了不行.
发表于 2006-9-14 10:10 | 显示全部楼层
原帖由 lcw 于 2006-9-14 09:25 发表



这个怎么用啊?
试了不行.


ginput(n)
n为你要显示的点数

命令窗口输入该命令后,用鼠标到你的图上去点
发表于 2006-9-14 10:11 | 显示全部楼层
原帖由 yukeyyxh 于 2006-9-13 21:01 发表
如果lcw要的是图中曲线上任意一点的精确值,那么我对realhappy的回答有些疑义:
ginput命名可以读出图上坐标吗?
ginput给出的是自己鼠标点击点的坐标,未必是图上的坐标(我指的是曲线部分),其值根本不精确 ...



ginput得到的值误差很大的
发表于 2006-9-14 13:33 | 显示全部楼层
N=5120;
f=5120;
n=0:(N-1);
t=n/f;
x=sin(2*pi*50*t);
X=fft(x);
f=f*(1:N)/N;
plot(f,abs(X),'-');
axis([0,115,0,3000]);
set(gca, 'XTickMode', 'manual', 'XTick', [0, 20, 50,60,70,80,90,100,110,115]);
index=find(power(1:floor(n))==max(power(1:floor(n))));
s=num2str(sprintf('%5.1f Hz',freq(index)));
plot(freq(index),power(index),['*','r']);
xlabel('Frequency');
ylabel('|F(k)|');
grid on;
楼主,我想让我的最高尖峰的频谱显示出来,为什么显示不出来呢?
 楼主| 发表于 2006-9-14 15:11 | 显示全部楼层
我不是很理解,全都是试着来
感觉你没有把power先计算出来.
index还没有值.
发表于 2006-9-14 15:25 | 显示全部楼层
  1. N=5120;
  2. f=5120;
  3. n=0:(N-1);
  4. t=n/f;
  5. x=sin(2*pi*50*t);
  6. X=fft(x);
  7. f=f*(1:N)/N;
  8. plot(f,abs(X),'-');
  9. axis([0,115,0,3000]);
  10. set(gca, 'XTickMode', 'manual', 'XTick', [0, 20, 50,60,70,80,90,100,110,115]);
  11. [C,I]=max(abs(X));
  12. %index=find(abs((1:floor(n)))==max(abs(X(1:floor(n)))));
  13. hold on;
  14. plot(f(I),C,'r*');
  15. xlabel('Frequency');
  16. ylabel('|F(k)|');
  17. grid on;
复制代码


是这个意思不?

评分

1

查看全部评分

发表于 2006-9-14 21:39 | 显示全部楼层
谢谢!happy!
我试试!
还有楼主,power是计算什么的?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-14 22:30 , Processed in 0.073567 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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