|
Autor |
plotten in Matlab |
|
NoNameTI-30x
Ehemals Aktiv  Dabei seit: 20.05.2016 Mitteilungen: 502
 | Themenstart: 2017-07-11
|
Ich arbeite zwar schon länger mit Matlab, das plotten bereitet mir allerdings immer noch Probleme.
\sourceon nameDerSprache
i = 2:202;
y = zeros(size(i));
size(y)
for( c = 0:200)
y(i) = 8.8*10^-6*c^4 - 0.0034*c^3 + 0.37*c^2 - 6.7*c +1.7*10^2;
end
plot(y)
\sourceoff
Ich möchte ganz einfach die Daten von y plotten. Zuvor habe ich den Teil vor der Schleife weg gelassen und die Fehlermeldung "Subscript indices must either be real positive integers or logicals." bekommen. Ich hab das so verstanden, dass mein Vektor nicht die Indizes 0 und 1 enthalten darf weil diese Zahlen für logische Operationen vorbehalten sind.
Wenn ich meinen Code allerdings so durchlaufen lasse, ist der Plot falsch. Warum ist das so? Und wie kann ich das beheben.
Danke schon mal für eure Hilfe!
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.1, eingetragen 2017-07-12
|
Hallo NoNameTI-30x,
Deine Interpretation der Fehlermeldung stimmt nicht, 1 ist als positive ganze Zahl sehr wohl als Index erlaubt.
Der Grund für den Fehler war die Verwendung der imaginären Einheit i als Index, mit y(c) und einem positiven Startwert für c sollte es klappen.
Besser wäre es, einen Vektor x mit den Werten der Abszisse zu erzeugen und dann das Polynom ohne Schleife mit Hilfe des elementweisen Potenzoperators .^ zu berechnen.
Servus,
Roland
|
Profil
|
NoNameTI-30x
Ehemals Aktiv  Dabei seit: 20.05.2016 Mitteilungen: 502
 | Beitrag No.2, vom Themenstarter, eingetragen 2017-07-13
|
Danke für die Hilfe. Wie aber würde ich eine Schleife dann von negativen Zahlen laufen lassen? Ich weiß man soll schleifen in Matlab vermeiden, dennoch müsste das doch gehen!
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.3, eingetragen 2017-07-13
|
Hallo NoNameTI-30x,
Du solltest zwischen der ganzzahligen Schleifenvariable c und den im Allgemeinen nicht ganzzahligen Werten, an denen Du das Polynom auswertest, unterscheiden. Wenn Du c als Index für den Vektor y verwendest, darf er keine nichtpositiven Werte annehmen.
Der Behauptung, dass man Schleifen in Matlab vermeiden sollte, kann ich in dieser Allgemeinheit nicht zustimmen. Es gibt Fälle, wo sie zu längerer Rechenzeit führen, aber dabei ist oft die fehlene Reservierung des Speichers schuld.
In Deinem Beispiel könntest Du auch die Funktion polyval verwenden.
Servus,
Roland
|
Profil
|
NoNameTI-30x
Ehemals Aktiv  Dabei seit: 20.05.2016 Mitteilungen: 502
 | Beitrag No.4, vom Themenstarter, eingetragen 2017-07-17
|
Profil
|
NoNameTI-30x hat die Antworten auf ihre/seine Frage gesehen. NoNameTI-30x hat selbst das Ok-Häkchen gesetzt. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|