Verfasst am: 23.04.2013, 17:24
Titel: Variable im Plot darstellen lassen
Hallo Zusammen!
Ich möchte gerne bei diesem untenstehenden Code die Variable n mit der Variablen y plotten. Dabei sollte n von 1 bis 1000 in einer Schritten verlaufen auf der x-Achse und y die y-Achse darstellen. Leider kann ich n nicht als linspace implementieren oder sonst wie als Vektor. Beziehungsweise sonst wie als Vektor, es kommt immer ein Fehler.
Kann mir jemand helfen?
if n == 1
F = [0;Q];
else for i = 1:n-1 if(i == 1)
F = [0;Q];
F = wextend('ar', 'per',F, r/2-1);
else
F = wextend('ar', 'per',F, r/2-1);
end
F = [0;Q];
F = wextend('ar', 'per',F, r/2-1);
end end
fprintf(' the displacement at the nodes are: ')
dis = K2\F
y = dis(2*n-1,1);
fprintf(' the displacement at the end node is: ')
w = Q*L^3/(3*E*I)+Q*L/(G*Aq)
Die Variable "n" wird in Deinem Code auf 10 gesetzt. Ich verstehe nicht, wo Du nun n auf 1:1000 setzen möchtest und wo genau wleche Fehler auftreten. Kannst Du das konkreter erklären? Kopien der Fehlermeldungen sind immer hilfreich, genauso wie sich auch den relevanten Code zu beschränken.
Ja, ich habe sie auf 10 gesetzt. Eigentlich möchte ich jedoch, dass die variiert wird, so dass ich die Variation der n's und die dis Funktion miteinander darstellen kann.
Wenn ich dies versuche, gibt es mir diesen Fehler:
Error using /
Matrix dimensions must agree.
Error in assignment31 (line 15)
l = 1/n;
Dies, weil ich für n mehrere Zahlen reingeschrieben habe...
Danke schön für deine Antwort!!
Für elementweise Funktionen benötigt man .* und ./ statt der Matrix-Multiplikation * und / .
Bemerkung: "clear all" löscht alle funktionen aus dem Speicher und das Neu-Laden von der Festplatte verschwendet eine Menge Zeit. Ausserdem werden alle Breakpoint gelöscht, was das Debuggen absichtlich erschwert. Sinnvoll ist das nicht, im Gegenteil. Es gibt allerdings eine Menge Dozenten, die das immer noch empfehlen, weil es ihnen bereits empfohlen worden ist. Aber die Mehrheit muss nicht unbedingt recht haben.
Besser: "clear variables" oder "clear".
Noch besser: Verwende Funktionen, da die alle ihren eigenen Satz von Variablen haben. Dann gibt es fgar keinen Bedarf für ein clearing.
Hallo Jan
Nun eigentlich möchte ich nur n variieren. Im Moment ist n nur eine Zahl, die ich gewählt habe.
Wie kann ich nun aber n vergrössern bzw. so verändern, dass ich n und y in einem Plot darstellen lassen kann? Mit Linspace oder n als Vektor gibt mir eine Fehlermeldung.
Meine Frage ist, ob es nicht eine Funktion in Matlab gibt, mit der ich Matlab sagen kann, stelle n nicht als Vektor dar, sondern nimm immer eine neue Zahl und setze sie für n ein, so dass ein y resultiert. Die Zahlen für n sollten von 2 mit einer Schritten bis 100 gehen. Schlussendlich wäre ein Graph mit n und y als Achsen nützlich.
Freundliche Grüsse
gadì
Mit Linspace oder n als Vektor gibt mir eine Fehlermeldung.
Das ist für eine Frage im forum zu allgemein. Wenn Du den Code und eine Kopie der vollständigen Fehlermeldung postest, kann man wahrscheinlich in wenigen Sekunden einen Verbesserungsvorschlag machen.
Ich vermute wirklich, dass wie bereits gesagt eine Änderung von * zu .* und von / zu ./ ausreicht.
Matlab kann hervorragend mit Vektorenb rechnen, die ja eine Untermenge der Matrizen sind. Matlab wurde ja gerade designed, um Matrizen effizient bearbeiten zu können, daher ja auch der Name "Mat"rix"Lab".
Also ist "n = 2:100" der richtige Ansatz, obwohl das auch mit einer FOR-Schleife machbar ist: "for n = 2:100". Die starke Ähnlichkeit zwischen den beiden Ansätzen ist augenfällig und beabsichtigt.
Danke für deine Hilfe!
Nun aber habe ich es geschafft:
[code]
elemente = 20;
for n=1:elemente
.....
y(n) = dis(2*n-1,1);
anzahl(n) = n
plot(anzahl,y)
[code]
So kann ich nun für n Zahlen von 1-100 einsetzen ohne dass es ein Dimensionsproblem gibt.
Freundliche Grüsse
Gadì
Einstellungen und Berechtigungen
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
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.