Сортировка в Idl7.1

Тема в разделе "Другие задачи", создана пользователем somebody, 20 янв 2010.

  1. somebody

    somebody Гость

    Здравствуйте!

    Мне надо написать программу на языке IDL 7.1. Программа заключается в следующем. У меня есть ТЕМ-файл (.tem), который содержит статистическии данные: годы и какии-то даты к ним. Кроме того в файле может иметься какое-то количество комментариев, расположенных произвольно по массиву. В начале файла так-же написан комментарий. Задача состоит в том, чтобы вывести двухмерный плот этих данных относительно лет. Например ордината "х" это годы, а "у" это данные.

    Я немного программирую в Java, а в IDL 7.1 нет. Написанная мною программа содержит ошибки и не выдаёт output.
    Если кому-то будет не затруднительно, то посмотрите мой код и помогите мне улучшить программу.

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Программа"</div></div><div class="sp-body"><div class="sp-content">PRO test
    file = DIALOG_PICKFILE() ;вызов файла
    OPENR, lun, file, /GET_LUN ;открытие файла
    line = '' ;обозначение стринга
    WHILE (NOT EOF(lun) AND line EQ '') DO BEGIN
    READF, file, x, y ; алгоритм сортировки данных между данными и комментариями
    IF N_ELEMENTS(x_value) EQ 0 THEN BEGIN ;здесь я вероятно неверно трактую, что комментарий это пустая строка (но как различить различный вид string?)
    x_value = x ; инитиализация, как одна переменная
    y_value = y ; инитиализация
    ENDIF ELSE BEGIN
    x_value = [x_value,x] ;сооружение array из одиночных переменных
    y_value = [y_value,y] ;сооружение array
    ENDELSE
    ENDWHILE
    measurement = FLTARR(y_value); float array, здесь будут сохранены данные
    date = STRARR(y_value) ; string array, годы будут сохранены в ASCII
    ln = 0 ; указатель строки
    WHILE NOT EOF(y_value) DO BEGIN ;
    table = str_sep(strtrim(strcompress(y_value), 2)) ; построение 2 мерной Stringarray
    date[y_value] = table[1] ;первая колонка годы
    measurement[y_value] = table[2] ;вторая колонка данные
    ln = ln + 1 ;переход к следующей строке
    ENDWHILE
    FREE_LUN,lun
    STOP
    PLOT, table[1:2,*], Title = "А", XTitle = "В", YTitle = "С" ;собственно плот
    END



    Большое спасибо за любую помощь
     
Загрузка...

Поделиться этой страницей