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

Error bei simpler funktion

 

PHEV
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2015, 22:51     Titel: Error bei simpler funktion
  Antworten mit Zitat      
Hallo ich möchte gerne folgendes plotten:


Code:
seff=0.4 ;
t = linspace(1,50,50) ;
V=4.5;
p_1=1.013;


p_v(t)=exp(-seff*(t/V)+log(p_1));

plot(p_v(t))
grid
t1=55;
p_2=0.100;
Seffcalc=(V/t1)*(log(p_1/p_2));




Da im bereich unter 1 jedoch die Schrittweite zu grob ist möchte ich gerne z.B.

Code:
t = linspace(0.1,50,500)
verwenden, erhalte dann aber den Error :

Zitat:
Subscript indices must either be real positive integers or logicals.


Ich habe bereits danach gegoogelt verstehe aber nicht warum, dies bei einem so einfachen Beispiel nicht mit Zahlen wie 0.1 gehen soll und nur gerade Zahlen funktionieren.


Danke für Eure Hilfe
edit winkow: code umgebung eingefügt
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.10.2015, 15:06     Titel: Re: Error bei simpler funktion
  Antworten mit Zitat      
Hallo PHEV,

Zitat:
Da im bereich unter 1 jedoch die Schrittweite zu grob ist möchte ich gerne z.B.
Code:
t = linspace(0.1,50,500)
verwenden, erhalte dann aber den Error :
Zitat:
Subscript indices must either be real positive integers or logicals.


Die Indices von Arrays müssen ganz-zahling sein. Das ist die Natur von Indices. Ein Vektor hat ein erstes und zweites Element. Aber kein 1,5.tes.

Zitat:
Ich habe bereits danach gegoogelt verstehe aber nicht warum, dies bei einem so einfachen Beispiel nicht mit Zahlen wie 0.1 gehen soll und nur gerade Zahlen funktionieren.

Für Matlab sind alle Beispiele "einfach", solange sie korrekte Syntax und valid Werte haben. 0.1 ist als Index aber nicht valide.
Gemeint ist nicht "gerade", sondern "ganze" Zahlen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 15:45     Titel:
  Antworten mit Zitat      
Und was heißt das jetzt im klartext für die Lösung des Problems?

Nur damit wir nicht aneinander vorbei reden: Mit indizies meinst du das Spalten oder vektor element i oder j bzw. bei einer Matrix ij korrekt?

Mein Vektor hat keine krummen Indizies. Er hat eine Länge der Schrittweite x mit x elementen. Ich verstehe nicht warum das nicht geht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 15:48     Titel:
  Antworten mit Zitat      
Code:
p_v(t)=exp(-seff*(t/V)+log(p_1));

t hat aber zb bei dir den wert 0.1 und ein 0.1 glied von p_v gibt es nicht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 15:57     Titel:
  Antworten mit Zitat      
Genau t hat den wert an der ersten stelle als 0.1 genau so wie es sein soll. Und ich habe keine Ahnung warum das nicht gehen soll.

Nochmal: Ich möchte das die funktion p_v(t) die Werte von t einließt und für jedes n vektorelement berechnet. Das muss gehen.

t(1,1)=0.1
t(1,2)=0.2
...
usw.

Wo liegt das Problem?

Ok wenn ich

pv anstelle von pv(t) verwende geht es. Verstehe ich nicht. Ich meine ich kann mir denken dass warum auch immer der wert als indizie benutzt wird, aber was ist dann der wert an dieser stelle und warum?

Und vor allem warum sagt keiner was die Lösung bringt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 16:01     Titel:
  Antworten mit Zitat      
Zitat:
Wo liegt das Problem?

Zitat:
t hat aber zb bei dir den wert 0.1 und ein 0.1 glied von p_v gibt es nicht.

was du meinst sit wahrscheinlich
Code:
p_v=exp(-seff*(t/V)+log(p_1));

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 16:27     Titel:
  Antworten mit Zitat      
Genau das ist die Lösung wie ich bereits oben geschrieben habe.

Aber warum? Ich würde es gerne verstehen.
In Mathcad muss ich es genau andersrum programmieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 16:33     Titel:
  Antworten mit Zitat      
Zitat:
Aber warum? Ich würde es gerne verstehen.

weil es unterschiede zwischen funktionswert argument und dessen index giebt.
f(3)=7 weist dem 3. element von f den wert 7 zu. 7 hat aber nicht aus dem index berechnet.
wenn du also
Code:
p_v=exp(-seff*(t/V)+log(p_1));

benutzt wird in die formel der vektor t eingesetzt also kommen auch genau so viele werte raus wie in t enthalten sind da hier elementweise gerechnet wird. der erste wert aus p_v berechnet sich aus dem ersten wert von t egal was in t enthalten ist
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 16:43     Titel:
  Antworten mit Zitat      
Vielen Dank für die Erklärung!
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 - 2025 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.