ddww 发表于 2007-9-18 16:34

怎样对一幅位图里的波形频谱分析 (附件为.rar)

(下载附件后请改扩展名为.rar)
附件里面有一幅位图catch,一个pic.m和一个t.m文件,位图里面是一个波形,横轴为时间轴 每个间隔为一秒;
目的是要对标号为O1-A1的波形进行频谱分析, 即想知道频率为7到13Hz的的频率分量在 415秒-417秒 和417秒-419秒两个时间段里幅值或能量的变化。 (t.m文件是一个对方波进行频谱分析的例子)
现在已经可以把图像给提取出来,并生成一个txt文件,往下怎么做呢?希望高手指点!谢谢

[ 本帖最后由 花如月 于 2007-9-18 19:09 编辑 ]

花如月 发表于 2007-9-18 19:17

干嘛走这么多的弯路呀,直接对绘图的原始数据进行分析不行么?从图像里准确提取曲线还是比较困难的。而且看你的程序是按照颜色分量提取的,我没有试,但是觉得要做到准确也是比较困难的
-----------------------------------------pic.m----------------------------------------------------
clear,close all;
I=imread('catch.bmp');
=size(I);
I1=double(I);
for i=1:x
for j=1:y
if((I1(j,i,1)==0)&&(I1(j,i,2)==128)&&(I1(j,i,3)==64))
h1(i)=y-j;   % h1(i)数组存储了图像中O1-A1各点数据的纵坐标
break;
end
end
end
plot(h1);hold on% 绘制O1-A1,O2-A2的图像
csvwrite('catch1.txt',h1);
-------------------------------------------t.m----------------------------------------------------
clear all;clc;close all;
Ts=0.0001;
fs=1/Ts;%采样率
t=0:Ts:0.0199;
x=2*square(2*pi*50*t,20);
N=length(x);%N是样点的个数,
fx=fft(x);
df=fs/(N-1);%频率分辨率在这里是表示谱图上一条谱线与下一条谱线之间的频率间隔,也是频域上横坐标的间隔。
               %N是样点的个数,df是频率分辨率,df=fs/N,fs=100。fs=100是从那儿看出来的呢?是从t=-1:0.01:1中的0.01得到的。
n=0:(N-1)/2;
f=n*df;
subplot(211);
plot(t,x);grid;
subplot(212);
JueDuiZhi=abs(fx(n+1))*2/N;
bar(f,abs(fx(n+1))*2/N); grid;
c=fx(n+1);

[ 本帖最后由 eight 于 2007-9-19 10:04 编辑 ]

花如月 发表于 2007-9-18 19:29

如果没有原始数据,建议直接用截图工具,把那条曲线截出来然后处理(否则根据颜色来提取O1-A1,O2-A2的图像分不开,而且rgb值也不那么容易取)。有了曲线图要计算坐标就可以参考本版的一个精华帖子如何把曲线的坐标找出来,近似得到绘图数据,然后进行分析。

[ 本帖最后由 花如月 于 2007-9-18 19:34 编辑 ]

ddww 发表于 2007-9-20 08:29

正在研究中...
页: [1]
查看完整版本: 怎样对一幅位图里的波形频谱分析 (附件为.rar)