如何使用 R 将干涉图傅里叶变换为红外光谱?
How to Fourier transform an Interferogramm to an IR Spectrum using R?
各位网友好,我有一张干涉图(时域),想把它傅里叶变换成红外光谱(频域),得到分子中官能团的峰。 FTIR(傅里叶变换红外光谱)是一种确定分子中官能团的先进方法。所谓的干涉仪是这样建造的:
干涉图绘制了以伏特为单位的信号强度与以纳米为单位的反射镜位置,如以下脚本所示:
par(family="mono", font.axis=1)
data <- read.table("D13-4-aminobenzoic_acid_interferogram.asc")
x <- data[,1]
y <- data[,2]
plot(x,y,
type="l",
xlab="Mirror position [mm]",
ylab="Signal intensity [V]",
axes=F,
)
axis(1)
axis(2)
这是 Link 到 .asc
文件的测量数据。傅里叶变换后的频谱应该是这样的:
我的问题是:如何在 R 中使用 fft()
从干涉图到红外光谱进行快速离散傅里叶变换?在 R 中是否可能从光谱到干涉图的反向转换,如果是,它是如何完成的。
干杯,
克里斯
试试这个解决方案:
d <- read.table('D13-4-aminobenzoic_acid_interferogram.asc')
f <- fft(d[,2])
# do fft(f,inverse=T) to get the unnormalized inverse
f2 <- sqrt(Re(f)^2 + Im(f)^2)
c <- 2.9979e8 # speed of light
lambda.laser <- 632.8e-9 # (nm) HeNe
nu.Nyquist <- 1e-2/lambda.laser # upper limit of the wavenumber
delta.nu <- nu.Nyquist/nrow(d) # wavenumber spacing
i.nu <- 1:floor(length(f2)/2) # show plot up to the Nyquist limit
plot((i.nu-1)*delta.nu,f2[i.nu],type='l')
各位网友好,我有一张干涉图(时域),想把它傅里叶变换成红外光谱(频域),得到分子中官能团的峰。 FTIR(傅里叶变换红外光谱)是一种确定分子中官能团的先进方法。所谓的干涉仪是这样建造的:
干涉图绘制了以伏特为单位的信号强度与以纳米为单位的反射镜位置,如以下脚本所示:
par(family="mono", font.axis=1)
data <- read.table("D13-4-aminobenzoic_acid_interferogram.asc")
x <- data[,1]
y <- data[,2]
plot(x,y,
type="l",
xlab="Mirror position [mm]",
ylab="Signal intensity [V]",
axes=F,
)
axis(1)
axis(2)
这是 Link 到 .asc
文件的测量数据。傅里叶变换后的频谱应该是这样的:
我的问题是:如何在 R 中使用 fft()
从干涉图到红外光谱进行快速离散傅里叶变换?在 R 中是否可能从光谱到干涉图的反向转换,如果是,它是如何完成的。
干杯,
克里斯
试试这个解决方案:
d <- read.table('D13-4-aminobenzoic_acid_interferogram.asc')
f <- fft(d[,2])
# do fft(f,inverse=T) to get the unnormalized inverse
f2 <- sqrt(Re(f)^2 + Im(f)^2)
c <- 2.9979e8 # speed of light
lambda.laser <- 632.8e-9 # (nm) HeNe
nu.Nyquist <- 1e-2/lambda.laser # upper limit of the wavenumber
delta.nu <- nu.Nyquist/nrow(d) # wavenumber spacing
i.nu <- 1:floor(length(f2)/2) # show plot up to the Nyquist limit
plot((i.nu-1)*delta.nu,f2[i.nu],type='l')