因此,当我转换到谱域时,我试图找到在x域中给定某个函数的3个东西。 1)幅度 2)频率 3)阶段
在R(统计软件)中,我编写了以下函数:
y=7*cos(2*pi*(seq(-50,50,by=.01)*(1/9))+32)
fty=fft(y,inverse=F)
angle=atan2(Im(fty), Re(fty))
x=which(abs(fty)[1:(length(fty)/2)]==max(abs(fty)[1:(length(fty)/2)]))
par(mfcol=c(2,1))
plot(seq(-50,50,by=.01),y,type="l",ylab = "Cosine Function")
plot(abs(fty),xlim=c(x-30,x+30),type="l",ylab="Spectral Density in hz")
我知道我可以通过获取bin值手动计算频率并将其延伸到间隔的大小(域的总时间)。由于垃圾箱从1开始,当它应该为零时,它将是频率=(BinValue-1)/ MaxTime,这确实得到了我在上述函数中的1/9。
我有两个简单的问题:
首先)我在计算阶段时遇到问题,是否有一个预先构建的R函数可以给我一个阶段?从手动计算中,密度函数在12处达到峰值(见下图),不应该是值,然后相位的值是2 * pi + angle[12]
,但我得到的值
angle[12] [1] -2.558724
将相位置于2 * pi +角度[12] = 3.724462。但这是错误的相位应该是32弧度。我做错了什么?
第二)是否有一个函数可以自动将abs(fty)[12]=34351.41
转换为余弦前面的放大数字,即7?。感谢您的帮助!