Frage

Auch wenn viele von Ihnen eine anständige Vorstellung davon haben, was auf dem ich bin mit dem Ziel, nur den Titel aus der Lektüre - erlauben Sie mir eine einfache Einführung noch

.

Ich habe ein Fortran-Programm -. Es besteht aus einem Programm, einige internen Subroutinen, 7 Module mit ihrem Verfahren und ... uhmm, dass es

Ohne ins Detail zu gehen, denn ich glaube nicht, dass an dieser Stelle notwendig ist, was den einfachste Weg wäre, MATLAB Plotten Funktionen (vor allem plot (x, y) mit einigen Anpassungen) zu verwenden, als interaktive Teil meines Programms? Für jetzt bin ich Plotten Routinen einige meiner eigenen individuell mit (basierend auf HPGL und Calcomp Routinen), sondern nur als Teil einer Übung für meinen Teil, ich ‚d wie zu sehen, wo das könnte gehen und wie es funktionieren wird (ist es sogar möglich, was ich vorschlage?). Auch, wie viel Mühe es dauern würde meinerseits?

Ich weiß, dass dieses Thema eher wurde ausgiebig in vielen „Tutorials“ im Netz beschrieben, aber aus irgendeinem Grund habe ich Mühe, die wirklich einfache, aber anschaulichen Einführungs diejenigen zu finden. Also, wenn jemand ein Beispiel oder zwei, Einfältigen veröffentlichen kann, würde ich wirklich dankbar. Oder nehmen Sie mich einfach an der Hand und führte mich durch ein funktionierendes Beispiel.

Plattform: IVF 11.something :) auf Win XP SP2, Matlab 2008b

War es hilfreich?

Lösung

Fortsetzung der Diskussion von DISLIN als Lösung, mit einer Antwort, die nicht in einem Kommentar passen ...

@M. S. B. - Hallo. Ich entschuldige mich in Ihrer Antwort zu schreiben, aber diese Kommentare sind viel zu kurz, und mit einer Antwort in Form einer Antwort eine Frage zu beantworten ist ... wie auch immer ...

Es ist die Schnell-Plot-Funktion von DISLIN - Routine QPLOT nur drei Argumente braucht eine Kurve zu zeichnen: X-Array, Y-Anordnung und Anzahl N. Siehe Kapitel 16 des Handbuchs. Plus nur einige zusätzliche Anrufe Ausgabegerät auszuwählen und die Achsen beschriften. Ich habe nicht verwendet, so dass ich weiß nicht, wie gut die automatische Skalierung ist.

Ja, ich weiß von Quickplot, und es ist damit verbundenen Routinen, aber es ist auch festgelegt für meine Bedürfnisse (kann nichts ändern), und ja, es ist die automatische Skalierung ist etwas quircky. Auch zu große Margen innerhalb der graf.

Oder wenn Sie die Macht der GRAF für die Einrichtung Ihres Graph Feld verwenden möchten, gibt es Unterprogramm GAXPAR automatisch empfohlenen Werte zu erzeugen. -2 als das erste Argument LABDIG automatisch die Anzahl der Stellen in tick Zeichen Etikett bestimmt.

Haben Sie die Routinen versucht?

Sorry, ich kann nicht die GAXPAR Routine finden Sie reffering in DISLIN-Index. Sind Sie sicher, es genau so genannt wird?

Antworten von M.S.B . Ja, ich bin sicher über die Schreibweise von GAXPAR. Es ist die letzte Routine in Kapitel 4 des DISLIN 9.5 PDF-Handbuch. Vielleicht ist es eine neue Routine? Auch gibt es einen anderen Weg, um die automatische Skalierung. SETSCL - siehe Kapitel 6

So weit, was ich getan habe (abgesehen von einigen "Entenband" Lösungen) ist

  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

, die die Extremwerte direkt auf der Achse setzen. Wissen Sie vielleicht, wie konnte ich eine „große tick-Marge“ haben auf der Außenseite, wie etwas Fläche zwischen der Kurve zu legen und die Achse (während noch setscl die Auswirkungen zu halten)?

Auch wenn Sie nicht wie die integrierte Auto-Skalierung, wenn Sie bereits DISLIN verwenden, Ihre eigene automatische Skalierung rollen wird einfacher als Fortran von MATLAB aufrufen. Sie können die Fortran intrinsischen Funktionen minval und maxwert verwenden, um die kleinsten und größten Werte in den Daten, als Schreib ein Unterprogramm Runde nach außen zu „schön“ rund um Werte zu finden. In ähnlicher Weise zu einem Unterprogramm auf dem Abstand tick Zeichen zu entscheiden.

Dies ist eigentlich nicht so leicht zu erreichen (und Ideen mich zu beweisen, falsch gerne geschätzt wird). Oder soll ich sagen, es ist einfach, wenn Sie den groben Bereich in dem sie Ihre Werte liegen. Aber wenn Sie es nicht tun, und Sie wissen nicht, ob Ihre Werte im Bereich von 13 bis 34 liegen oder in dem von 1330 bis 3440, dann ...

... wenn ich auf dem Holzweg bin völlig hier, bitte erklären, wenn Sie ment etwas anderes. Mein Englisch ist etwas fehlt, so dass ich nur die oben hoffen kann, ist verständlich.

Im Innern ein Unterprogramm rund Graph Start / End-Wert zu bestimmen, können Sie die aktuellen Min- / Max-Werte immer zwischen 1 und 10 sein skalieren, haben dann einen Tisch schöne runde Werte zu holen, dann unscale zurück auf den richtigen Bereich.

-

Andere Tipps

Der einfachste Weg wäre, um Ihre Fortran-Programm schreiben, um Datei zu haben, und haben Ihre Matlab-Programm die Dateien, für die Informationen lesen Sie darstellen möchten. Ich mache die meisten meiner Zahlenverarbeitung auf Linux, so dass ich bin nicht ganz sicher, wie Windows ein Prozess verarbeitet eine Datei und ein anderes Schreiben sie zugleich zu lesen.

Das ist ein bisschen eine Flickschusterei aber, so dass Sie über die Verwendung von Matlab denken, möchten die Fortran-Programm aufrufen (oder Teile davon) und Daten erhalten direkt zum Plotten. In diesem Fall möchten Sie untersuchen Erstellen von Fortran MEX-Dateien in der Matlab-Dokumentation. Dies ist relativ einfach zu tun und würde Ihre Bedürfnisse dienen, wenn Sie zufrieden sind Matlab zu verwenden, um den Prozess und Fortran zu fahren als Compute-Dienst zu handeln. Ich in den mit Matlab für einfache Fortran MEX-Dateien verteilen Beispiele aussehen würde.

Schließlich könnten Sie Matlab von Ihrem Fortran-Programm aufrufen, suchen in der Dokumentation zu Aufruf der Matlab Engine . Es ist ein wenig schwieriger für mich zu sehen, wie diese Ihre Bedürfnisse passen könnten, und es ist nicht etwas, das ich mit schrecklich vertraut bin.

Wenn Sie wieder Post mit mehr Details kann ich in der Lage sein, mehr spezifische Tipps zu geben, aber Sie sollten wahrscheinlich die Ärmel hoch und Tauchen in MEX-Dateien ins Rollen.

Dump Matlab weil seine proprietäre, teuer, aufgebläht / langsam und Codes sind nicht leicht zu parallelisieren.

Was sollten Sie tun, ist die Verwendung etwas auf den Linien von DISLIN, PLplot, GINO, gnuplotfortran etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top