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

Subscript indices Fehlermeldung

 

Dirk Raven als Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2015, 14:28     Titel: Subscript indices Fehlermeldung
  Antworten mit Zitat      
Hallo Leute,

bin noch extrem neu in Matlab und versuche ein mathematisches Programm zu schreiben und die verschiedenen Kurven zu plotten.

Über eine for-Schleife will die in Abh. verschiedener Zeiten die einzelnen Werte berechnen lassen.
Hier ein kurzes Bsp:

Code:
for k=1:100
         if Time.period/10<=k<=(Time.opening+Time.close);
                 for i=1:10
                       m.yop(i)=0.016667*i;    
                  end
        end
end


Hierfür werden die Werte schon richtig bestimmt.
Nun will ich diese allerdings noch in einer Figure plotten lassen.
Und in der Figure kommt die Fehlermeldung zustande.
Kann es passieren, dass im 2. plot m.yop als eine Fkt neu definiert wird?

Code:
figure
hold on;
plot(Y_SIN);
plot(m.yop(linspace(Time.close, 1, (Time.close+Time.opening))));
hold off;



Ich hoffe ihr könnt mir weiterhelfen.
Bin auch dankbar für alle anderen Hilfen bezüglich Problembeschr. oder ähnliches.

edit bei denny: Bitte die Codeumgebung verwenden.


marvin.be
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 28.08.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 08.09.2015, 17:04     Titel:
  Antworten mit Zitat      
Hallo Dirk Raven,

füge bitte beim nächsten Mal deinen Code in die dafür vorgesehenen Tags ein, damit liest sich der Code dann auch besser. Befindet sich über dem Textfeld wenn man eine Nachricht schreibt.

Ich glaube das du einfach ein
Code:
zwischen deine beiden Plots schreiben müsstest. Warum schreibst du vor deinem ersten Plot ein
Code:
? Steht davor noch ein weiterer Plot? Also prinzipiell so:

Code:

figure
plot(x1,y1)
hold all % hold on verändert die Plotfarbe usw. nicht, hold all hingegen schon
plot(x2,y2)
hold all
...
hold off
 


Gruß,
Marvin
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.09.2015, 19:32     Titel:
  Antworten mit Zitat      
Hallo,

was soll denn
Code:
m.yop(linspace(Time.close, 1, (Time.close+Time.opening)))

bezwecken?

Da wird in m.yop indiziert, und es wäre schon ein großer Zufall, wenn die Indizes ganzzahlig sind. Ich würde auch immer empfehlen, solche verschachtelten Konstrukte zu vermeiden. Wie man ja sieht, erschwert es die Fehlersuche sehr.

Code:
if Time.period/10<=k<=(Time.opening+Time.close);

Dies macht ziemlich sicher nicht das, was du davon erwartest. Stattdessen
Code:
if Time.period/10<=k & k<=(Time.opening+Time.close);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dirk Raven
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.15
Wohnort: Braunschweig
Version: 2015a
     Beitrag Verfasst am: 09.09.2015, 08:05     Titel:
  Antworten mit Zitat      
Hallo Marvin und Harald, danke für eure Antworten.

Hold all zwischen den einzelnen Plots hilft nicht um den Fehler zu beheben.

und mit

Code:

m.yop(linspace(Time.close, 1, (Time.close+Time.opening))))
 


Ich versuche die Werte, die vorher berechnet werden über ein spezielles Zeitintervall aufzutragen.
Und wundersamerweise bekomme ich ohne das &-Zeichen doch exakt die Werte die ich haben möchte.
Nun ist nur mein Ziel die einzelnen Funktionen zu plotten.
Private Nachricht senden Benutzer-Profile anzeigen
 
marvin.be
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 28.08.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 09.09.2015, 11:09     Titel:
  Antworten mit Zitat      
Mir wird bei deinem Code leider nicht klar welche 2 Parameter du gegeneinander auftragen willst. Vielleicht hilft dir mein Mini-Beispiel bei dem ein Sinus von 0 bis 2*pi erzeugt, aber einmal von 1 bis 3 in blau, und von 3 bis 5 in grün geplottet wird. Alles in einem Fenster.

Code:

x=0:0.01:2*pi; y=sin(x);                    % erzeuge x und y Koordinaten
a=(x>=1); b=(x<=3); c=logical(a.*b);       % wähle Bereich aus der betrachtet werden soll
plot(x(c),y(c))                             % plotte y vs. x
hold all

a=(x>=3); b=(x<=5); c=logical(a.*b);
plot(x(c),y(c)),xlim([0 2*pi])              % plotte y vs. x mit Limit von 0 bis 2*Pi
hold off
 


Kannst du deinen Code mal so umschreiben das man sieht was bei dir x und y ist?
Private Nachricht senden Benutzer-Profile anzeigen
 
Dirk Raven
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.15
Wohnort: Braunschweig
Version: 2015a
     Beitrag Verfasst am: 09.09.2015, 12:07     Titel:
  Antworten mit Zitat      
Also die y-Werte werden über folgende for-Schelife bestimmt:

Code:

for k=1:100
    if Time.period/10<=k<=(Time.opening+Time.close);
        for i=1:10
            m.yop(i)=0.016667*i;    
        end
        end
end
 


Diese Werte werden in m.yop gespeichert.
Da bekomme ich auch genau die Werte, die ich brauche.

Nun will ich diese Werte in einer figure mit einer Sinuskurve plotten.
Die Fkt für Sinus sieht dabei folgendermaßen aus.
Frequenz von 10 mit Phasenverschiebung von pi/2.
Die oben berechneten Werte sollen nun in einen speziellen Abschnitt über 'linspace' dargestellt werden.

Der Wert für Time.close wird ebenfalls in der for-schleife bestimmt.

Code:


Y_SIN=0.5*sin(2*pi*10*t-pi/2)+0.5
t=0:0.001:01

figure
plot(Y_SIN);
hold all;
plot(m.yop(linspace(Time.close, 1, (Time.close+Time.opening))));
hold off;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
marvin.be
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 28.08.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 09.09.2015, 12:24     Titel:
  Antworten mit Zitat      
Also wenn ich das richtig sehe, dann fehlt dir in deinem plot Befehl einfach nur das x bzw. in deinem Fall das t Argument, da MatLab ja nicht weiß gegen was es dein Y_SIN auftragen soll und trägt somit mit

Code:


deine Y-Koordinaten gegen Integer von 1 bis N auf. Hingegen der Befehl

Code:


sorgt dafür das der Sinus der korrekten Zeit zugeordnet wird. X und Y Vektoren müssen dabei natürlich gleich lang sein.

Gleiches gilt dann für deinen zweiten Plot mit m.yop, da fehlt auch das Zeitargument.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dirk Raven
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.15
Wohnort: Braunschweig
Version: 2015a
     Beitrag Verfasst am: 09.09.2015, 12:43     Titel:
  Antworten mit Zitat      
Danke Marvin

Das mit dem x-Wert vorne weg hat gefehlt.
Beziehungsweise habe ich das falsch in Matlab geschrieben
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.