Использование функций построения MatLab в качестве интерактивной части программы Fortran

StackOverflow https://stackoverflow.com/questions/2946525

Вопрос

Хотя многие из вас будут иметь приличную идею о том, на что я нацелен, только от чтения титула - позвольте мне еще просто введение.

У меня есть программа Fortran - состоит из программы, некоторых внутренних подпрограмм, 7 модулей со своими собственными процедурами, а ... UHMM, вот и все.

Не собираясь в подробности, потому что я не думаю, что это необходимо в этот момент, Что было бы самым простым способом использования чертежей MATLAB (в основном участок (X, Y) с некоторыми настройками) как интерактивная часть моей программы? На данный момент я использую некоторые из моих собственных настраиваемых процедур построения (на основе процедур HPGL и CALCOMP), но так же, как часть упражнений со своей стороны, я хотел бы увидеть, где это может пойти и как это будет работать (это Это даже возможно, что я предлагаю?). Кроме того, сколько усилий потребовалось бы со своей стороны?

Я знаю, что эта тема довольно широко описана во многих «Учебных пособиях» в сети, но по какой-то причине у меня проблемы с поиском действительно простых, но иллюстративных вступительных. Так что, если кто-то может опубликовать пример или два, простых, я был бы очень благодарен. Или просто возьмите меня за руку и направь меня через один рабочий пример.

Платформа: IVF 11.что-то :) на Win XP SP2, MATLAB 2008B

Это было полезно?

Решение

Продолжая обсуждение Dislin в качестве решения, с ответом, который не впишутся в комментарий ...

@MSB - Привет. Я прошу прощения за написание в своем ответе, но эти комментарии слишком короткие, и отвечая на вопрос в форме ответа с ответом ... В любом случае ...

Существует функция быстрой сюжета Dislin - рутина QPLOT требует только трех аргументов для участия в кривой: Archay Array, y y Array и номер N. См. Главу 16 Руководство. Плюс только несколько дополнительных вызовов для выбора устройства вывода и метку осей. Я не использовал это, поэтому я не знаю, насколько хороша автоматическая масштабирование.

Да, я знаю, что QuickPlot, и это связанные тренировки, но оно слишком зафиксировано для моих потребностей (ничего не может изменить), и да, это аутокалирование несколько quircky. Также, слишком большие поля в графе.

Или если вы хотите использовать Power of GrAF для настройки устройства вашего графа, имеется подпрограмма GAXPAR для автоматического создания рекомендуемых значений. -2 Как первый аргумент для LABDIG автоматически определяет количество цифр на метках клещей.

Вы пробовали рутины?

Извините, я не могу найти рутину GAXPAR, вы становитесь, чтобы в индексе Дислини. Вы уверены, что это называется точно так?

Ответить от MSB.: Да, я уверен в написании GAXPAR. Это последняя рутина в главе 4 Руководство по эксплуатации 9,5 PDF. Возможно, это новая рутина? Также есть еще один путь к автоматическому масштабированию: setscl - см. Главу 6.

До сих пор, что я делаю (кроме каких-то «утиной ленты»)

  use dislin; implicit none

  real, dimension(5) :: &
  x = [.5, 2., 3., 4., 5.], &
  y = [10., 22., 34., 43., 15.]
  real :: xa, xe, xor, xstp, &
          ya, ye, yor, ystp
  call setpag('da4p'); call metafl('xwin');
  call disini(); call winkey('return');

  call setscl(x,size(x),'x'); 
  call setscl(y,size(y),'y')

  call axslen(1680,2376) !(8/10)*2100 and 2970, respectively
  call setgrf('name','name','line','line')

  call incmrk(1); call hsymbl(3);

  call graf(xa, xe, xor, xstp, ya, ye, yor, ystp); call curve(x,y,size(x))
  call disfin()

  end

который поставит экстремальные значения прямо на оси. Знаете ли вы, возможно, как я мог бы пойти, чтобы иметь одну «крупную галочку» снаружи, чтобы положить некоторую область между кривой и осью (пока сохраняю эффекты SetsCl)?

Даже если вам не нравится встроенный автоматический масштабирующий, если вы уже используете Dislin, прокаживаете собственное автоматическое масштабирование, будет проще, чем вызов Fortran из Matlab. Вы можете использовать внутренние функции Fortran Minval и MaxVal, чтобы найти самые маленькие и самые большие значения в данных, чем напишите подпрограмму для округления наружу на «приятные» круглые значения. Аналогично, подпрограмма принять решение о расстоянии метки галочка.

Это на самом деле не так легко сделать (и идеи, чтобы доказать, что меня неправильно будет радостно оценено). Или я должен сказать, легко, если вы знаете грубый диапазон, в котором будут лгать ваши ценности. Но если вы этого не сделаете, и вы не знаете, будут ли ваши ценности будут в диапазоне 13-34 или в 1330-3440, то ...

... Если я нахожусь на неправильном треке полностью здесь, пожалуйста, объясните, если вам что-то другое. Мой английский несколько не хватает, поэтому я могу только надеяться, что вышеупомянутое.

Внутри подпрограммы, чтобы определить значения начала / конечных / конечных / конечных значений круглого графика, вы можете масштабировать фактические значения Min / Max, чтобы всегда быть от 1 до 10, а затем иметь таблицу, чтобы выбрать приятные круглые значения, а затем не включайте в себя.

--

Другие советы

Самым простым способом было бы, чтобы ваша программа Fortran запись в файл, а программа MATLAB прочитала эти файлы для информации, которую вы хотите построить. Я делаю большую часть своего количества хрустания на Linux, поэтому я не совсем уверен, как Windows обрабатывает один процесс, написав файл и другое чтение его одновременно.

Это немного ключей, хотя, поэтому вы можете подумать об использовании MATLAB, чтобы вызвать программу Fortran (или части IT) и получить данные напрямую для построения. В этом случае вы захотите расследовать Создание файлов Fortran MEX в документации MatLab. Это относительно просто сделать, и будет служить вашим потребностям, если вы были рады использовать MATLAB для управления процессом и Fortran, чтобы выступить в качестве вычислительной службы. Я бы посмотрел в примеры, распространяемые с MATLAB для простых файлов Fortran MEX.

Наконец, вы могли бы назвать MatLab из вашей программы Fortran, поиск документации для Вызов двигателя MatLab. Отказ Мне немного сложнее увидеть, как это может соответствовать вашим потребностям, и это не то, что я ужасно знаком.

Если вы снова публикуете с более подробностями, я могу предоставить более конкретные советы, но вы, вероятно, должны начать катиться с рукавами и погрузиться в файлы MEX.

Сброс MATLAB, потому что его запатентованные, дорогие, раздутые / медленные и коды не легко распараллелизуются.

Что вы должны сделать, это использовать что-то на линии Dislin, Plplot, Gino, Gnuplotfortran и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top