Mogę zasugerować napisanie krótkiego programu do symulacji widm. Problem z wykorzystaniem rzeczywistych danych polega na liczbie punktów (powyżej 32 tys.), Które powodują, że publikowanie plików CSV z surowymi widmami jest nieracjonalne. Poniżej znajduje się krótka próba podania tego, czego szukasz. Przepraszam tych, którzy nie używają Mathematica; jednak wypróbowałem wersję programu Excel i bardzo szybko stała się nieporęczna.
Mam trzy funkcje:
Wyczyść [funkcja]; funkcja [shift_, n_, sprzęganie_, intensywność_] : = Moduł [{}, Plus @@ Tabela [Dwumian [n, k] * intensywność / (n + 1) * Cos [(x) * (przesunięcie + sprzężenie (k - n / 2))], {k, 0, n}]] Clear [fid] makefid [feature_, broadening_]: = Module [{}, Exp [-broadening x] Plus @@ {feature}] Clear [transform] transform [fid_]: = Module [{resolution = 4096, $ y, $ x}, $ y = Re [Fourier [Tabela [fid, {x, 0, rozdzielczość, 0,1}]]]; $ y = Take [$ y, Round [Length [$ y] / 2]]; $ x = zakres [długość [$ y]] / (rozdzielczość / (2 Pi)); Transpose @ {$ x, $ y}]
Funkcja feature
tworzy pik z przesunięciem chemicznym jako pierwszym argumentem, rozszczepieniem jako drugim, stała sprzężenia (użyj 0,1 dla starterów) i intensywność (jej całka). makefid
tworzy symulowany FID na podstawie przekazywanej funkcji, a transform
tworzy widmo. Można go użyć w następujący sposób:
a = feature [1.2, 2, 0.1, 3]; b = feature [2, 0, 0.1, 3]; c = feature [4.1, 3 , 0,1, 2]; fid = makefid [Plus @@ {a, b, c}, 0,01]; ListLinePlot [transform [fid], PlotRange -> {{0, 5}, All}]
Cechy {a, b, c}
to symulowany octan etylu dający następujące widmo:
Dane, które Want is in transform [fid]
, który można wyeksportować jako plik CSV:
Export ["myfile.csv", transform [fid]]
Dzięki temu będzie dostępny dla innych pakietów oprogramowania i będziesz mógł wykonać swój plan lekcji matematyki. Aby upewnić się, że to działa poprawnie w Mathematica, możemy utworzyć funkcję z naszych danych i zintegrować numerycznie trzy piki:
data = Interpolation [transform [fid]]; NIntegrate [data [ x], {x, 0.9, 1.5}] NIntegrate [data [x], {x, 1.5, 2.2}] NIntegrate [data [x], {x, 3.7, 4.5}]
Daje to obszary odpowiednio 0,32, 0,25 i 0,33, a tego się spodziewaliśmy.