gaogaola 发表于 2013-11-20 14:45

离散时间序列的功率谱密度计算问题

我现在要计算一组离散时间序列的功率谱密度,每秒有一个数值,比如:1 11
2 23
3 34
4 66
5 11
6 23
7 34
8 90
9 80
10 11
但是计算功率谱密度计算中有一个值是采样频率,我现在的数据已经是离散数据了,还要采样吗?还是说采样频率写1hz呢?这个一直不太明白,采样就是为了得到离散序列值,但是计算的时候又一定需要采样频率,那离散的序列值应该怎么算功率谱密度呢?
再有算出来是功率谱密度还是功率谱啊?

另外是关于采样周期,采样频率,采样间隔的区别?
这个一直不太明白,比如采样周期是0.1s,也就是采样间隔是0.1s,每隔0.1s取一段信号,这样采样频率就是1/0.1s=10hz,表示每秒取样10次,但是实际每间隔0.1s取一次,只取了5次啊,怎么回事?
如果对网络流量包进行采样,包大概是1s发一个,那周期应该设为多少合适呢。
如果设定采样周期是0.1s,那么采样值会有很多0值出现,这对计算功率谱密度会不会有影响,应该怎样设定采样周期呢?


gaogaola 发表于 2013-11-20 21:48

不懂 求解答?!

hcharlie 发表于 2013-11-21 08:42

你这个离散时间序列的采样频率就是1Hz,这是没有问题的。
你的问题在于你这个时间序列的功率谱密度是在哪里定义的?
我见到的功率谱密度的定义是对于无穷长的,稳态的,各态历经的,随机振动信号的。
你这个时间序列是不是振动信号?
是不是稳态的?
这么短,距离无穷大太远太远了!
我做随机信号的功率谱密度要做得误差小一点,大概需要102400个数据,而不是11个数据。
102400个数据做出来的还叫功率谱密度估计,还不敢叫功率谱密度!
你求这个功率谱密度做什么?

gaogaola 发表于 2013-11-21 09:52

hcharlie 发表于 2013-11-21 08:42 static/image/common/back.gif
你这个离散时间序列的采样频率就是1Hz,这是没有问题的。
你的问题在于你这个时间序列的功率谱密度是在哪里 ...

如果采样频率是10hz的话,我应该1s采10次还是5次啊,具体怎么采啊?
是0.1s(采样)+0.1s(间隔)+0.1s(采样)+0.1s(间隔)+0.1s(采样)+0.1s(间隔)+0.1s(采样)+0.1s(间隔)+0.1s(采样)+0.1s(间隔)=1s1s采样5次
还是0.05s(采样)+0.05s(间隔)+。。。+0.05s(采样)+0.05s(间隔)=1s1s采样10次呢??
就是说采样周期是包括采样时间和间隔时间么?

我想找出这些数据的周期分布规律,当这些数据发生异常时我能通过他功率谱的变化检测出来。

gaogaola 发表于 2013-11-21 13:52

gaogaola 发表于 2013-11-21 09:52 static/image/common/back.gif
如果采样频率是10hz的话,我应该1s采10次还是5次啊,具体怎么采啊?
是0.1s(采样)+0.1s(间隔)+0.1s( ...

不知道怎么删帖子呀。。
我明白你的意思了,真的很感谢你,我的确不太懂这方面的,我是学网络的,我现在的数据是1s、8s等不同周期的数据包叠加在一起的混合流量,序列值是单位时间内的数据包字节数,我现在就是想对它做功率谱,但是不知道该怎么去采样,我之前做的都是统计0.05s内数据包的字节数,然后隔0.05s,然后再采0.05s的字节。。。因为我这里的值得是一个时间段内的字节数,导致我对信号采样的误解了。那如果这样我该怎样采样呢?直接算每1s内的字节数然后算功率谱可以么,这样算fs=1的采样么??

hcharlie 发表于 2013-11-21 14:29

采样频率1Hz就是采集1秒内的流量,不需再隔1秒。
如果你这是随机量,如果用功率谱能发现什么周期的规律,也必需有大量的数据统计平均。比如采集1个小时3600点作为一帧,求功率谱估计,然后统计24小时的功率谱平均值,能发现其普遍规律,天天如此,规律还比较稳定,哪一天的规律变化了,才叫变了。这样一天需要3600X24个数据点,一个月又是30倍。决不是靠11个点就能发现规律!
总之要大量的数据才能比较准。

gaogaola 发表于 2013-11-21 14:49

hcharlie 发表于 2013-11-21 14:29 static/image/common/back.gif
采样频率1Hz就是采集1秒内的流量,不需再隔1秒。
如果你这是随机量,如果用功率谱能发现什么周期的规律,也 ...

的确是得要大量的数据,不过一般保证取几个周期的数据的数据就可以了吧。。
我数据主要是1s为周期和8s为周期的流量叠加,这里的1s为周期指的是这个类型的包是1s会出现一次的,它也并不是连续的周期数据。
那我的最高频率就是1hz吧,采样一般是5-10倍的话,我可以设定采样频率为10hz,那采样的时候1s内我得到的序列值就是:第1个0.1s内的数据字节数、第2个0.1是内的。。。第10个0.1s内的,一共10个值了,但是这样采样的意义何在呢,不是所有的值都参与计算了么,这样也算采样么?是应该这样做吗?

hcharlie 发表于 2013-11-21 17:31

gaogaola 发表于 2013-11-21 14:49 static/image/common/back.gif
的确是得要大量的数据,不过一般保证取几个周期的数据的数据就可以了吧。。
我数据主要是1s为周期和8s为 ...

假定都是一秒的数据,采样频率就取1Hz,分析最高频率1/2Hz,取一定余量,可以到0.4Hz,如果取1000个点,频率分辨率可以到1/1000Hz,从0~0.4Hz有效400个频率点。
如果你的信号是完全随机的要用功率谱法大量数据平均,如果象你估计的接近周期函数,应该用频谱法,不需要求功率谱密度,平均次数少一点也可以。

gaogaola 发表于 2013-11-21 23:27

hcharlie 发表于 2013-11-21 17:31 static/image/common/back.gif
假定都是一秒的数据,采样频率就取1Hz,分析最高频率1/2Hz,取一定余量,可以到0.4Hz,如果取1000个点,频 ...

我按采样频率为10hz,采样长度为100s进行采样,然后算功率谱
采样数据D:\研三\2.jpg
我写的程序是这样的D:\研三\1.jpg
算出来的功率谱是这样的D:\研三\3.jpg
但是总是感觉算的不对呀,横坐标的单位是hz么,请问这样算对吗?因为主频率应该是1hz、1/3hz、1/8hz的。。

gaogaola 发表于 2013-11-21 23:28

hcharlie 发表于 2013-11-21 17:31 static/image/common/back.gif
假定都是一秒的数据,采样频率就取1Hz,分析最高频率1/2Hz,取一定余量,可以到0.4Hz,如果取1000个点,频 ...

图不知道能不能看见。。
我是这样写的:
    fs=10;
>> nfft=512;
>> n=1000;
>> cx=xcorr(x,'unbiased');
>> cxk=fft(cx,nfft);
>> pxx=abs(cxk);
>> t=0:round(nfft/2-1);
>> k=t*fs/nfft;
>> p=10*log10(pxx(t+1));
>> plot(k,p);

hcharlie 发表于 2013-11-23 08:41

本帖最后由 hcharlie 于 2013-11-23 09:34 编辑

gaogaola 发表于 2013-11-21 23:28 static/image/common/back.gif
图不知道能不能看见。。
我是这样写的:
    fs=10;

你如果采集频率10Hz就是每0.1秒采集一次,不需再加间隔0.1秒。
从时域变到频域,大概有3种方法:
功率谱密度,功率谱(指FFT绝对值平方/NFFT),频谱。实际上这三种方法画出的图形是一样的,尤其是用对数坐标形状完全一样,只差了个大小和单位。
如果需要知道频域的绝对值大小,比如振动量值大小,我前面说过,周期信号用频谱较准,随机信号用功率谱密度PSD较好。
如果只对峰值点的频率感兴趣,或只是对峰值的变化比例感兴趣,用哪种方法都一样。用频谱方法最简单。
你用的是相关函数的FFT求功率谱密度,这是最慢最慢的方法。现在电脑速度快极了,速度不是问题了,但我们还是习惯选用最快的方法。

wanyeqing2003 发表于 2013-11-24 10:07

看来,这会儿楼主对数据分析的了解不多。
采样频率和采样时间间隔应该是同样意思。
采样频率需要满足乃奎斯特采样定律。
采样的数量,楼主给出的太少,统计误差会比较大。
通常采样数量为512,1024,……或更多。

至于采样周期,我想是否出现两个概念,一是样本大小的时间,还有就是采样间隔时间。在这里需要明确。

wanyeqing2003 发表于 2013-11-24 10:10

至于功率谱和功率谱密度,其差别在于是否除以频率带宽。
其物理单位是:g^2与g^2/Hz的差别。

gaogaola 发表于 2013-11-24 13:31

wanyeqing2003 发表于 2013-11-24 10:10 static/image/common/back.gif
至于功率谱和功率谱密度,其差别在于是否除以频率带宽。
其物理单位是:g^2与g^2/Hz的差别。

我数据主要是1s为周期和8s为周期的流量叠加,这里的1s为周期指的是这个类型的包是1s会出现一次的,它也并不是连续的周期数据。
那我的最高频率就是1hz吧,采样一般是5-10倍的话,我可以设定采样频率为10hz,那采样的时候1s内我得到的序列值就是:第1个0.1s内的数据字节数、第2个0.1是内的。。。第10个0.1s内的,一共10个值了,但是这样采样的意义何在呢,不是所有的值都参与计算了么,这样也算采样么?是应该这样做吗?

hcharlie 发表于 2013-11-24 15:58

gaogaola 发表于 2013-11-24 13:31 static/image/common/back.gif
我数据主要是1s为周期和8s为周期的流量叠加,这里的1s为周期指的是这个类型的包是1s会出现一次的,它也并 ...

你是不是1秒钟只出一个数据?这样采样频率只能是1HZ,这样只能分析出0.5HZ以内频率的信号。
页: [1] 2
查看完整版本: 离散时间序列的功率谱密度计算问题