我试图在R中在频域中绘制时间序列数据。我有一个带有列/信号x
,y
和z
的csv文件。信号采样频率为50 Hz。数据长度为N=651
。
我为列/信号x
执行了以下步骤:
信号x
的FFT:
y <- fft(data$x)
计算信号x
的大小:
mag <- sqrt(Re(y)^2+Im(y)^2)
绘制数据:
plot(mag, xlab="Samples",ylab="Strength", type="l", col="blue", xlim=c(0,60), main="Spectrum",t="h",lwd=2)
我想要的是获得频率(Hz)的x轴而不是样本数。最后,我想得到一个y轴(强度)对x轴(Hz)的图。
我想要一个像这样的频率轴:10Hz,20Hz,30Hz,40Hz,50Hz等。
我需要做些什么来使频率轴以Hz为单位而不是样本数?
答案 0 :(得分:0)
这是你之后的事吗?
plot(mag,
xlab="Samples",
ylab="Strength",
type="l",
col="blue",
xlim=c(0,
60),
main="Spectrum",
t="h",
lwd=2,
axes=F)# don't plot the default axes
#build our own axes with labels
box()
axis(2)
ticks <- axTicks(1)
axis(1,at=ticks,labels=paste0(format(ticks),'Hz'))