马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
最近在学习随机振动的自功率谱计算方法,在用matlab分析时遇到一个问题:同一个信号,分析时取的时间长度不一样,得到的功率谱密度数值相差很大,与所取时间长度之比成正比。为了简化说明这个问题,我下面贴了一个程序,分析一个频率16Hz的正弦信号。
程序中先生成16个周期的信号:x(采样点数128个),如下图蓝色曲线所示,然后取出其中前2个周期,令其为x1,如红色曲线所示
然后,利用matlab自带的periodogram函数分析这两个信号的自功率谱密度,由于这两个信号本质上是同一个信号,因此它们的自功率谱密度应该是相等的才对。可是,分析的结果却让我糊涂了,显然,两个信号的自功率谱密度相差很大(频率都是正确的)。请问为什么同一个信号的自功率谱密度会与分析时所选取的时间长度有关呢?
附程序:
clc;clear;close all
f = 16; %信号周期(Hz)
A = 1; %信号幅值
C = 16; %周期数
T = C / f; %时间长度
N = 128; %信号点数
t = linspace(0,T,N + 1); t(end) = []; %生成时间序列
fs = 1 / t(2); %采样频率
x = A * sin(2 * pi * f * t); %生成信号
plot(t,x,'.-')
t1 = t(1:2 * N / C); %从前面生成的信号中取出前2个周期
x1 = x(1:2 * N / C); %从前面生成的信号中取出前2个周期
hold on
plot(t1,x1,'r.-');
legend('16个周期的信号','2个周期的信号')
[Pxx,f] = periodogram(x,rectwin(N),N,fs); %对16个周期的信号进行自谱密度分析
figure
subplot(2,1,1);
stem(f,Pxx); title('16个周期的信号的自谱密度')
[Pxx1,f1] = periodogram(x1,rectwin(length(t1)),length(t1),fs); %对2个周期的信号进行自谱密度分析
subplot(2,1,2);
stem(f1,Pxx1); title('2个周期的信号的自谱密度')
|