2013-07-14 2 views
2

Используя данные, вставленные в конце, я получаю диаграмму с использованием TeeChart, как показано ниже (второе изображение). Однако то, что я хочу получить, показано как 1-е изображение (черная линия). Мне интересно, как это сделать? Любые комментарии (о том, как делать или о алгоритме) оцениваются!Как использовать TeeChart для создания такой диаграммы?

по GaussView (ИК-спектра)

gaussview-1

от TeeChart

teechart-1

данные
11.25 0.8558 
    13.93 0.7101 
    17.49 1.7783 
    18.48 0.0972 
    20.91 0.7608 
    23.36 2.0540 
    27.87 1.7063 
    31.34 0.4998 
    32.45 0.8735 
    36.86 1.9740 
    37.68 1.1448 
    39.02 1.6381 
    39.64 2.4984 
    40.63 2.5854 
    43.90 1.9891 
    45.38 1.0168 
    46.85 3.4588 
    50.19 0.5997 
    51.69 3.0986 
    52.37 5.2783 
    54.35 1.3672 
    55.93 1.9774 
    58.26 1.4327 
    60.00 0.1276 
    62.18 0.1294 
    64.04 2.5145 
    66.10 7.5823 
    68.48 0.4689 
    70.60 3.5168 
    72.22 6.7262 
    73.78 2.9225 
    76.05 1.6195 
    77.39 2.9711 
    79.05 3.0244 
    79.51 7.5896 
    81.41 4.4896 
    83.34 4.7092 
    85.55 5.7364 
    91.65 9.5119 
    93.06 4.1190 
    95.26 0.5367 
    97.60 1.7773 
    99.59 4.0967 
    100.29 3.3551 
    102.68 2.9290 
    104.37 2.1907 
    105.86 3.1003 
    108.29 4.6200 
    108.83 1.6020 
    112.74 4.5426 
    113.61 5.8697 
    115.43 5.3545 
    116.92 7.5064 
    118.52 1.1735 
    121.26 3.2800 
    123.70 0.7140 
    125.51 12.3312 
    126.79 0.6539 
    129.59 1.6488 
    130.17 3.3001 
    133.15 5.4448 
    133.81 5.2958 
    135.57 0.7273 
    136.74 2.7725 
    138.48 7.9547 
    140.74 4.4754 
    143.16 4.1672 
    145.21 2.0647 
    147.25 6.0894 
    150.77 6.6854 
    153.96 0.2456 
    154.71 5.2882 
    157.72 3.3148 
    159.83 41.1787 
    160.94 3.3881 
    164.82 21.6722 
    167.02 25.2616 
    168.56 5.3165 
    172.00 6.9968 
    174.48 3.4963 
    175.31 3.6395 
    177.35 1.3092 
    180.03 6.7443 
    181.92 2.3712 
    185.01 1.8564 
    186.79 8.2453 
    188.59 11.1710 
    191.39 2.9369 
    196.44 5.2397 
    197.33 6.8805 
    199.89 15.0378 
    201.45 4.7054 
    203.79 13.3486 
    207.10 5.7904 
    209.25 11.0755 
    211.85 23.5711 
    213.68 17.2254 
    214.61 3.9448 
    217.47 34.9757 
    220.06 5.1604 
    220.74 3.7671 
    225.87 13.0953 
    229.77 8.4948 
    233.98 21.1654 
    237.24 17.6599 
    238.71 25.2668 
    239.34 15.7494 
    244.56 43.4527 
    246.16 36.9053 
    248.17 7.5639 
    251.21 8.0873 
    253.46 4.3431 
    255.42 5.9059 
    256.73 1.7785 
    260.22 14.1219 
    260.70 4.8738 
    265.07 10.0827 
    267.08 4.9080 
    268.50 11.9286 
    271.89 8.8873 
    274.01 29.4943 
    275.04 29.2369 
    277.04 52.4743 
    278.13 14.3284 
    281.82 3.3507 
    284.56 21.7815 
    288.79 8.5983 
    290.67 30.2466 
    294.11 10.9149 
    301.49 7.3059 
    302.30 67.0245 
    302.84 6.5049 
    305.51 0.2989 
    311.16 4.8017 
    316.45 16.0656 
    320.37 42.8200 
    325.45 36.8340 
    336.19 35.0153 
    338.45 18.0032 
    339.63 3.6068 
    340.62 5.0152 
    348.49 77.5149 
    352.39 84.1067 
    358.46 16.2392 
    364.34 56.0846 
    371.03 78.4101 
    378.71 50.3951 
    381.68 79.3127 
    391.26 10.3953 
    394.69 75.6727 
    397.38 50.5976 
    399.97 40.0959 
    405.64 23.4627 
    417.96 12.1802 
    419.47 21.9191 
    429.40 1.9362 
    431.84 10.8746 
    437.11 6.7498 
    439.38 42.1917 
    454.11 18.9428 
    459.08 41.1182 
    465.76 50.9344 
    467.25 27.1854 
    475.56 130.5899 
    481.25 72.5219 
    487.87 25.8915 
    489.15 5.5288 
    489.42 124.2637 
    497.37 167.8169 
    501.23 6.7103 
    502.49 9.7129 
    508.77 26.4849 
    520.56 9.5302 
    522.17 2.9284 
    523.54 124.3465 
    524.98 79.0902 
    528.27 53.1656 
    533.88 12.9278 
    536.31 203.4675 
    540.72 33.9929 
    543.41 142.5774 
    550.07 37.2596 
    557.93 168.8374 
    560.52 60.4300 
    562.84 36.1606 
    566.10 151.7689 
    567.79 66.6189 
    572.38 149.8744 
    576.57 79.9780 
    585.50 112.8536 
    586.51 95.4084 
    597.52 3.5723 
    600.64 60.4112 
    603.83 147.9974 
    604.41 29.0763 
    606.39 7.1134 
    609.57 6.2102 
    611.10 7.8785 
    612.84 162.3687 
    620.43 170.4984 
    625.49 160.0876 
    630.37 36.9260 
    638.97 40.4913 
    646.00 25.4423 
    646.05 17.5637 
    652.18 23.6302 
    653.87 45.4506 
    655.96 31.1678 
    657.95 43.5278 
    666.44 17.7154 
    668.63 78.3033 
    674.15 20.1193 
    675.43 28.3611 
    679.85 99.0228 
    684.13 62.2844 
    685.09 36.8384 
    686.88 44.9261 
    688.54 86.4601 
    690.35 23.8856 
    691.64 245.3722 
    699.16 120.5513 
    709.26 2.6988 
    723.74 332.8580 
    726.74 6.5182 
    728.74 165.1788 
    730.46 5.6564 
    738.13 13.5268 
    740.13 12.5284 
    742.74 113.7637 
    752.67 23.3185 
    753.85 50.6479 
    754.67 2.4454 
    771.93 6.8897 
    775.45 195.5114 
    777.97 60.3044 
    782.04 1.5514 
    784.40 28.3898 
    785.12 127.7568 
    787.49 6.4007 
    795.51 7.3133 
    799.34 201.9055 
    802.14 19.5573 
    818.55 382.3869 
    819.71 6.5877 
    822.96 14.2146 
    824.05 2.2121 
    826.46 111.9575 
    830.73 29.2754 
    831.01 24.9736 
    834.71 22.8259 
    844.08 59.8333 
    845.62 40.3083 
    850.76 135.1998 
    856.03 2.2111 
    858.83 5.4722 
    860.88 228.0665 
    867.35 122.4081 
    875.07 5.8894 
    877.33 74.5747 
    881.75 28.0580 
    884.49 4.7371 
    887.88 27.9916 
    888.41 81.4206 
    895.50 18.5746 
    906.14 37.3150 
    909.57 39.2727 
    909.89 13.8018 
    912.76 3.8752 
    916.27 0.2486 
    926.60 12.7987 
    926.73 10.4374 
    929.15 131.5315 
    931.10 2.9229 
    934.57 113.7453 
    942.69 91.3771 
    948.15 25.1075 
    951.93 33.4258 
    954.69 44.6893 
    964.15 1.5994 
    965.00 0.7321 
    972.10 8.4069 
    973.43 7.5676 
    979.59 10.5092 
    981.39 30.0315 
    983.34 157.9592 
    987.12 24.8756 
    995.21 81.4163 
    995.60 22.9050 
    996.60 18.5511 
    997.58 41.7678 
    1001.40 7.2941 
    1010.63 3.7654 
    1017.41 12.3927 
    1020.10 1.2928 
    1020.50 6.4156 
    1027.74 3.5186 
    1029.51 15.7644 
    1032.33 4.9588 
    1038.71 4.4052 
    1042.08 3.1957 
    1042.54 23.7493 
    1044.90 0.6490 
    1051.57 9.5923 
    1058.97 6.4381 
    1072.38 13.5097 
    1075.43 1.4965 
    1076.01 16.5798 
    1079.15 0.7097 
    1082.69 163.1472 
    1085.62 11.4565 
    1090.04 9.5450 
    1104.35 0.4181 
    1105.81 19.4965 
    1107.07 1.4116 
    1107.32 2.1959 
    1107.51 0.8469 
    1109.85 16.5227 
    1116.34 3.7611 
    1117.27 22.3061 
    1122.22 5.0637 
    1123.85 2.0819 
    1126.87 99.5244 
    1127.27 0.7508 
    1129.03 7.9063 
    1131.13 12.5686 
    1136.06 2.4318 
    1138.90 11.9482 
    1139.10 0.9399 
    1146.32 3.3872 
    1159.39 11.9471 
    1161.78 14.1617 
    1174.95 23.2351 
    1179.72 14.9091 
    1189.14 3.7741 
    1204.68 17.3601 
    1205.62 25.2461 
    1214.86 38.4565 
    1222.25 4.7630 
    1222.40 15.9294 
    1222.83 12.4804 
    1229.30 17.8518 
    1248.53 23.6590 
    1252.67 56.1945 
    1257.42 8.6184 
    1261.43 8.7950 
    1261.70 4.7045 
    1265.78 16.4704 
    1267.68 4.8315 
    1273.64 1.5993 
    1273.80 83.2365 
    1275.45 18.8720 
    1284.93 0.8743 
    1286.10 12.7644 
    1286.41 38.1346 
    1291.55 238.9537 
    1299.52 27.7401 
    1302.81 21.4327 
    1312.97 7.2615 
    1316.40 37.1928 
    1319.76 32.1009 
    1321.66 43.8679 
    1323.22 11.7175 
    1324.58 0.5651 
    1330.94 16.7787 
    1332.59 16.8946 
    1337.01 3.1987 
    1338.49 12.1263 
    1340.41 31.1700 
    1345.84 13.8655 
    1346.50 0.9794 
    1349.54 14.2011 
    1357.85 45.9726 
    1358.09 3.9610 
    1362.71 5.3914 
    1366.21 16.9550 
    1372.10 64.1772 
    1374.92 161.5665 
    1380.58 230.3131 
    1384.00 328.5477 
    1385.04 5.1667 
    1390.07 0.1589 
    1397.37 40.3024 
    1397.88 5.2971 
    1398.44 3.5395 
    1401.91 22.7442 
    1403.68 0.8136 
    1404.50 30.1834 
    1407.30 62.3116 
    1407.42 3.0998 
    1410.47 17.7966 
    1411.88 14.4825 
    1414.12 10.3780 
    1418.49 8.3303 
    1419.19 17.0070 
    1419.62 3.6385 
    1419.71 19.0577 
    1422.55 6.9579 
    1423.39 1.0293 
    1431.35 333.3874 
    1436.26 307.7709 
    1440.15 41.7923 
    1441.39 536.8224 
    1443.14 252.0576 
    1445.99 216.7363 
    1449.43 128.0188 
    1462.98 11.9692 
    1467.30 28.3347 
    1473.56 23.1465 
    1475.93 42.4514 
    1483.98 36.0277 
    1484.24 5.2501 
    1484.39 24.3948 
    1485.45 10.8186 
    1490.44 11.5231 
    1492.27 7.3633 
    1495.11 8.5312 
    1495.56 18.0179 
    1497.77 3.1224 
    1497.88 14.2399 
    1498.31 3.0918 
    1499.72 5.7379 
    1501.76 26.4984 
    1504.98 13.7143 
    1507.61 1.4629 
    1508.28 8.4327 
    1508.41 4.8958 
    1508.48 4.2296 
    1512.21 8.4668 
    1515.46 1.8979 
    1518.07 20.2652 
    1518.82 9.2094 
    1521.34 9.8395 
    1526.17 2.9542 
    1526.43 9.4439 
    1528.02 3.3756 
    1528.30 2.4509 
    1532.78 5.3007 
    1534.13 6.5043 
    1537.24 53.5120 
    1540.81 1.9113 
    1543.85 4.4977 
    1544.20 4.2213 
    1548.35 3.6878 
    1552.54 14.8614 
    1559.24 11.6988 
    1564.07 74.1574 
    1566.46 108.9087 
    1567.58 6.3844 
    1575.43 2.5287 
    1577.84 233.8768 
    1595.41 237.2607 
    1596.87 369.0431 
    1616.23 173.9335 
    1624.09 836.9518 
    1626.98 233.4742 
    1628.60 5.4746 
    1632.35 100.3850 
    1637.82 390.7923 
    1643.65 382.0132 
    1676.36 174.8716 
    1677.37 240.7762 
    1681.68 71.5960 
    1686.63 207.9686 
    1689.79 321.4797 
    1706.91 270.6300 
    1710.36 276.3541 
    1719.02 103.4710 
    1722.09 13.0707 
    1732.52 118.1263 
    1733.45 134.7822 
    1737.38 86.6398 
    1741.65 193.3777 
    1745.96 267.6557 
    1748.85 104.5308 
    1750.11 84.3295 
    1754.89 142.1761 
    1762.19 44.6467 
    1778.03 277.3395 
    1786.51 54.7132 
    1801.43 124.4060 
    2501.45 2817.4313 
    2892.60 1433.0563 
    3010.32 37.5543 
    3018.83 24.9084 
    3020.63 4.2749 
    3026.82 31.0382 
    3027.83 7.3210 
    3028.25 21.5317 
    3034.03 19.3657 
    3042.31 18.5627 
    3042.36 29.6968 
    3045.35 18.7716 
    3047.91 13.3663 
    3050.76 6.5443 
    3053.48 25.7608 
    3055.29 40.7227 
    3055.58 28.5712 
    3055.88 7.9362 
    3057.54 10.2078 
    3059.36 27.4736 
    3059.83 26.5108 
    3059.85 22.3488 
    3061.56 4.6525 
    3063.51 25.9303 
    3065.41 14.8583 
    3066.43 25.5202 
    3066.83 40.4775 
    3068.42 6.6192 
    3068.55 27.7206 
    3069.66 5.1897 
    3074.54 30.3667 
    3077.72 1.0555 
    3082.30 19.8899 
    3085.29 277.0890 
    3086.03 7.4622 
    3086.91 55.7138 
    3090.29 9.7699 
    3090.42 23.7039 
    3098.95 15.2559 
    3100.15 37.0280 
    3101.05 12.4841 
    3104.13 31.3489 
    3104.26 305.3252 
    3107.27 14.1801 
    3107.65 8.3824 
    3111.25 23.7250 
    3113.32 1.6109 
    3116.84 31.4006 
    3118.15 8.3440 
    3123.33 5.3227 
    3127.86 7.6340 
    3129.01 7.9926 
    3132.66 10.0175 
    3138.18 348.0472 
    3138.83 3.9995 
    3145.04 497.0629 
    3165.17 3.9671 
    3168.85 798.7276 
    3200.74 837.1487 
    3204.12 38.9204 
    3206.21 21.6877 
    3206.27 39.0288 
    3206.94 34.9876 
    3212.51 37.8135 
    3212.92 20.7165 
    3226.37 15.2672 
    3281.65 23.1858 
    3282.58 732.5195 
    3283.15 78.0229 
    3283.92 991.2039 
    3287.78 41.3881 
    3290.37 28.2757 
    3290.38 7.2058 
    3292.55 27.3318 
    3294.23 639.1337 
    3297.11 79.7924 
    3316.31 8.5916 
    3322.30 531.3133 
    3334.75 1463.9099 
    3351.13 264.7960 
    3360.34 535.8013 
    3364.82 26.2667 
    3366.49 742.5906 
    3384.37 544.7382 
    3400.63 6.4281 
    3402.60 899.7517 
    3453.29 481.2669 
    3470.55 778.0064 
    3473.31 615.6872 
    3500.34 437.9592 
    3529.86 128.6586 
    3558.92 229.6075 
    3574.77 105.5502 
    3612.50 690.1041 
    3614.15 29.7018 
    3616.71 175.4585 
    3624.01 42.5718 
    3641.96 104.2644 
    3672.04 421.7865 
    3678.61 67.3033 
    3687.01 73.1667 
    3714.16 231.0432 
    3740.14 63.1046 
    3757.45 102.1256 
    3763.15 124.6488 
    3779.08 64.7553 
    3791.33 34.4075 
+1

Похоже, что ваши данные являются силовыми линиями в определенных волновых числах. Для того чтобы представить их в виде спектра, возможно, потребуется больше данных. Обычно каждая линия может быть представлена ​​гауссовым профилем с определенной полушириной. Эта ширина зависит от температуры и давления. Из-за взаимодействия с другими молекулами (и другими физическими аспектами) форма линии в большинстве случаев напоминает профиль Voigt. Как теперь выглядит, на ваш вопрос нельзя ответить без дополнительной информации. –

+0

@LURD «представляют собой спектр» - вы говорите о БПФ? похоже, это не так. Сравните графики - на первом нет БПФ, а только конкретная обработка данных в виде разделенных пиков. Но X-координаты пиков выше соответствуют тем координатам узлов графа ниже. –

+2

@ Arioch'The, каждый пик представляет собой гауссовский профиль. Есть способы представить спектр из многих строк, если известны все свойства каждой строки. Прочность линии - это только одно свойство. Этот вопрос, вероятно, более подходит здесь: http://physics.stackexchange.com/. –

ответ

3

Как TLama любезно предложили решение размещено отдельно:

[Решение]

Разница между участками из-за уширение линии Лоренца. См. Spectra line in Wikipedia. Очень благодарю вас за все комментарии! Очень простой рабочий пример приведен ниже:

unit uCurvFit; 

interface 

uses 
    uRtlTypes, 
    Math, SysUtils; 

type 

    TLineShapeFitFunc = (lsffLorentz, lsffGauss); 

    TLineShapeFit = function(const RelOffset: Double): Double; 

function Lorentz(const RelOffset: Double): Double; 
function Gauss(const RelOffset: Double): Double; 

procedure SpectrumFit(const OriginalFrequencies, OriginalIntensities 
    : TADouble; LineShapeFitFunc: TLineShapeFitFunc; var NFreqs: Integer; 
    var NewFrequencies: TADouble; var NewIntensities: TADouble); 

implementation 

function Lorentz(const RelOffset: Double): Double; 
begin 
    Result := 1.0/(1.0 + RelOffset * RelOffset); 
end; 

function Gauss(const RelOffset: Double): Double; 
const 
    nln2: Double = -0.301029996; // - Log10(2.0); 
begin 
    Result := Exp(nln2 * RelOffset * RelOffset); 
end; 

procedure SpectrumFit(const OriginalFrequencies, OriginalIntensities 
    : TADouble; LineShapeFitFunc: TLineShapeFitFunc; var NFreqs: Integer; 
    var NewFrequencies: TADouble; var NewIntensities: TADouble); 
const 
    FrequencyStep: Double = 1.0; 
    HwHm: Double = 20.0; // Full Width at Half Maximum 
var 
    I, J: Integer; 
    MaxFreq, MinFreq: Double; 

    Intensity, Freq, Center, RelOffset: Double; 
    LineShapeFit: TLineShapeFit; 
begin 
    MaxFreq := 4000; 
    MinFreq := 0; 

    for I := 0 to Length(OriginalFrequencies) do 
    begin 
    if MaxFreq < OriginalFrequencies[I] then 
     MaxFreq := OriginalFrequencies[I]; 

    if MinFreq > OriginalFrequencies[I] then 
     MinFreq := OriginalFrequencies[I]; 
    end; 

    case LineShapeFitFunc of 
    lsffLorentz: 
     LineShapeFit := Lorentz; 
    lsffGauss: 
     LineShapeFit := Gauss; 
    end; 

    NFreqs := 1 + Trunc((MaxFreq - MinFreq)/FrequencyStep); 
    SetLength(NewFrequencies, NFreqs); 
    SetLength(NewIntensities, NFreqs); 

    for I := 0 to NFreqs - 1 do 
    begin 
    Intensity := 0.0; 
    Freq := MinFreq + I * FrequencyStep; 

    for J := 0 to Length(OriginalFrequencies) - 1 do 
    begin 
     Center := OriginalFrequencies[J]; 
     RelOffset := (Freq - Center)/HwHm; 
     Intensity := Intensity + OriginalIntensities[J] * LineShapeFit(RelOffset); 
    end; 

    NewFrequencies[I] := Freq; 
    NewIntensities[I] := Intensity; 
    end; 
end; 

end. 
2

кавычки источник данных:

1801.43 124.4060 
2501.45 2817.4313 

и

2501.45 2817.4313 
2892.60 1433.0563 

и

2892.60 1433.0563 
3010.32 37.5543 

TeeChart правильно делает, что приведенные данные. .
Если вы хотите изменить данные - и график - вы должны добавить пропущенные данные.

Вы должны решить, как часто (по каким X-ступеням) ваши дополнительные счета должны идти. И какая дельта от y-zero означала бы отмену распространения (поскольку разница становится пренебрежимо мала в ваших глазах).

Затем вы должны составить формулу полиномов, определяющую, насколько быстро значения будут падать вокруг каждого пика по отношению к абсолютному значению пика. Что-то вроде y == y0/(a*(x-x0)^4 + b*(x-x0)^2 + c) или что-то подобное. Вы должны попробовать это, и, наконец, получить количество коэффициентов и полномочий, которые соответствуют вашим вкусам.

Затем вокруг каждого пика (aka первичного источника данных) вы должны добавить эти вторичные расчетные точки, пока они не упадут очень близко к y-нолю или пока не будут соответствовать вторичным значениям, исходящим из соседней точки данных, которые происходят первый.

Вы можете получить формулу, где две волны, распространяющиеся бы мясо, в зависимости от y0, y1 и abs(x0-x1) или вы просто можете быть ленивым и вычислить полный путь с обеих сторон, то просто вставить максимум у-значения.

Эта вторичная, расширенная серия, которую вы передадите TeaChart, и она будет показывать вам то, что вам нравится.

PS. взгляните на mitov.com - у него мало свободных компонентов, но, возможно, будет что-то подходящее ...

PPS. очень приблизительный черновик для обогащения данных http://pastebin.com/JtaqkAkS Функция оценки и конфигурация должны быть настроены вручную, чтобы получить наилучший возможный результат, независимо от того, что означает «лучший».

+0

Спасибо за ваши комментарии! Я никогда не говорю, что изображение TeeChart ошибочно. Кажется, что изображение GaussView использует определенный алгоритм расширения пика, где изображение TeeChart напрямую связано с точками данных. Поэтому я задаюсь вопросом, существует ли такой алгоритм (ы) для TeeChart. То, что вы описали, состоит в том, чтобы предоставить дополнительные баллы собой, и в то же время слишком общие для меня о том, как это сделать. – SOUser

+0

Ну, если вы не хотите делать свой алгоритм - тогда купите кого-то другого. Посмотрите на библиотеки митов, возможно, вы найдете то, что вам нужно в одном из его наборов. Посмотрите на Torry.net для более старых, в основном заброшенных библиотек. –

+0

Я не работал с TeeChart. Я не видел ваших источников и структур данных. Поэтому я не могу написать вашу программу вместо вас. Я могу только показать вам общий подход. Если вы не хотите покупать стороннюю библиотеку lib, тогда начните кодирование пиковых расширений algo. И когда у вас возникнут трудности - задайте вопросы об этих трудностях, как и почему ваш алгоритм не работает. http://www.catb.org/~esr/faqs/smart-questions.html –

Смежные вопросы