WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

for-Schleife für plot verwenden

 

Lynn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2017, 17:41     Titel: for-Schleife für plot verwenden
  Antworten mit Zitat      
Hallo zusammen,

ich benötige mal Hilfe von euch.

Ich schreibe zurzeit meine MA und erstelle dazu Diagramme mit Matlab (R2010a).
An sich stellt das auch keine Probleme dar, aber damit es einfacher wird und alle Diagramme gleich werden,möchte ich eine Funktion verwenden. Diese habe ich Mittels Matlab erstellt und abgeändert. Funktioniert auch wunderbar. Aber bisher nur für ein Diagramm. jetzt möchte ich gerne, dass jedes Diagramm nach der von mir erstellten Funktion erstellt wird. Insgesamt wären es 18 Diagramme bei denen natürlich die verwendeten Daten anders sind, also X und alle Y sind anders.

Wie kann ich das am besten umsetzen? Ich habe an eine for-Schleife gedacht. Aber weiß nicht genau wie und wo ich Sie anwenden soll.

So sieht das Einlesen meiner Daten und mein bsiheriger Programmtext aus:

Code:

clear all
close all
clc

T=xlsread('SolarTracker.xlsx', 'ST1', 'C7:C153') ;
L=xlsread('SolarTracker.xlsx', 'ST1', 'E7:E153');
d=xlsread('SolarTracker.xlsx', 'ST1', 'G7:G153');
BTM1=xlsread(SolarTracker.xlsx', 'ST1', 'S7:S153');
pH1=xlsread('SolarTracker.xlsx', 'ST1', 'D7:D153');

d11=d(1:24);
pH11=pH1(1:24);
T11= T(1:24);
L11=L(1:24);
BTM11=BTM1(1:24);

createfigure1(d11, pH11, T11, L11, BTM11);

d12=d(25:46);
pH12=pH1(25:46);
T12=T(25:46);
L12=L(25:46);
BTM12=BTM1(25:46);
.....
....
 


(es folgen dann noch 16 weitere Bestimmungen der X und Y)

Ich habe die Funktion als Anhang beigefügt

Vielen Dank für eure Hilfe

Liebe Grüße
Lynn

createfigure1.m
 Beschreibung:
Das ist meine Funktion für das Diagramm. Funktioniert

Download
 Dateiname:  createfigure1.m
 Dateigröße:  2.21 KB
 Heruntergeladen:  294 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.08.2017, 12:17     Titel: Re: for-Schleife für plot verwenden
  Antworten mit Zitat      
Hallo Lynn,

Ich verstehe noch nicht, welche Daten variabel sind.
Zitat:
(es folgen dann noch 16 weitere Bestimmungen der X und Y)

Welche Variablen sind denn die "X" und "Y"?

Lasse auf jeden Fall erstmal den "brutal clear header" weg:
Code:

Was immer Du vorher gemacht hast ist danach zerstört. Zudem sind alle Funktionen aus dem RAM gelöscht und das Nachladen von der Festplatte ist ein sinnfreier Zeitfresser. Ich bedauere sehr, dass dieses brutale Löschen unter Anfängern so weit verbreitet ist und verstehe nicht, weshalb so etwas empfohlen wird.

Du jannst den Code zum Erstellen der Grafik in eine Funktion auslagern, die nur die variablen Daten als Input verwendet. Dann musst Du Dich noch entscheiden, ob die Diagramme alle in einzelne Figures gezeichnet werden sollen, oder per subplot in eine Figure.
Statt "d11", "d12" wäre es viel praktischer "d" zu verwenden und es als Array zu definieren. Einen Index im Namen zu verstecken ist immer ausgesprochen unpraktisch und verhindert den Zugriff über Schleifen.

Ich vermute Du suchst etwas wie:
Code:
for k = 1:24:length(d)
  dv = d(k:k+23);
  ...
  createfigure1(dv, pHv, Tv, Lv, BTMv);
end


Anmerkung: Farben werden mit 8 Bit Auflösung pro Kanal dargestellt. Die Angabe mit 15 Nachkommastellen ist deshalb übertrieben, 3 Stellen reichen locker:
Code:
'Color', [0.0431372560560703 0.517647087574005 0.780392169952393]

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lynnee
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 27.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2017, 21:01     Titel:
  Antworten mit Zitat      
Hallo Jan,

Vielen Dank für deine Antwort, ich versuche nochmal etwas zu erläutern Wink :
Meine Variablen Daten sind alle X und Y.
In meinem Fall entspricht X eine Anzahl von Tagen, deshalb d,
Y1 stellt den Verlauf des pH-Wertes, Y2 den Verlauf der Temperatur, yvector steht für die Lichtintensität und Y3 ist Wachstumsverlauf.

Und ich habe insgesamt 18 verschiedene Zeiträume, deshalb auch 18 verschieden X und Y's.

Danke schonmal für den Hinweise. Uns wurde das so im Studium beigebracht...Aber man lernt ja nie aus Wink... Jetzt dauert es auch nicht mehr so ewig Very Happy

Und die Erstellung der Diagramme habe ich ja schon in einer Funktion ausgelagert, diese hatte ich ja auch schon beigefügt gehabt und die heißt createfigure1.m...
In dieser Funktion werden 4 subplots in einer Figure erstellt. Ich Brauche diese Figure aber insgesamt 18 mal mit je 4 subplots die verschiedene Inputs haben. Und ich suche eine schönere Lösung als 18 mal die Funktion zu kopieren und da manuell die Figure Nummer zu ändern.
Und ich hatte gedacht da gibt es eine schöne Lösung.

Den Tipp mit dem Array hatte ich schon von einem Freund bekommen, ich weiß nur nicht wie ich das umsetzen soll und was genau damit gemeint ist, denn ich Lese zu Beginn erst einmal meine Daten aus Excel ein (Wie dem Programmcode zu entnehmen ist). Das sind 136 Zahlen soweit ich weiß, Von diesen Zahlen möchte ich die ersten 24 in Figure 1 darstellen, die nächsten 22 in Figure 2, die nächste 14 in Figure 3 usw... Die Abstände bzw Intervalle sind unregelmäßig. Geht das dann überhaupt?


Die Funktion hat übrigens Matlab regeneriert, deshalb auch die vielen Kommastellen Wink . Ich habe mein erstes Diagramm erstellt und dann im Diagramm einiges umgeändert und mir dann ein M-File erstellen lassen. Aber Danke für den Hinweis Smile


Vielen Lieben Dank, Und ich hoffe mein Anliegen ist zu verstehen. Aber wahrscheinlich ist kopieren die einfachste Methode zum jetzigen Zeitpunkt.

Liebe Grüße
Lynn
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.