Kill-Them-All

Der Rest => 42 => Thema gestartet von: Sensor am 04. Juli 2008, 15:12:11

Titel: Hilfe zu Matlab
Beitrag von: Sensor am 04. Juli 2008, 15:12:11
Ich habe ein Problem mit Matlab das ich nicht ganz verstehe.

Zitatx=1:0.1:4
y=x.*5

Das ist mein erster Code. Der auch einwandfrei funktioniert.

Das Problem ist wenn ich
Zitatx=1:0.1:4
y=1/(x.*5)
ausführen möchte. Dann bekomme ich als Fehler:


Zitat? ? ? Error using ==> mrdivide
Matrix dimensions must agree.

Error in ==> Untitled at 2
y=1/(x.*5)

Wie kann ich denn den Fehler umgehen? Es muss doch möglich sein die komplette x durch eins zu teilen.
Titel: Re: Hilfe zu Matlab
Beitrag von: pazi am 04. Juli 2008, 16:56:10
Zitat von: Sensor am 04. Juli 2008, 15:12:11Wie kann ich denn den Fehler umgehen? Es muss doch möglich sein die komplette x durch eins zu teilen.
[klugscheiß]
1. Im Rechenschritt oben teilst du aber nicht durch 1
2. Warum sollte man etwas durch 1 teilen wollen?  ;D
[/klugscheiß]

Ich habe leider nur Erfahrung mit Scilab (das Pendant in open source), aber das ist eigentlich relativ ähnlich vom Code her.
Ich frage mich nur, was (x.*5) bedeuten soll!? (bzw. was bewirkt der Punkt?)

Achja, durch Vektoren kann man grundsätzlich nicht dividieren, nur multiplizieren. Damit müsste man aber auch zum gewünschten Ergebnis kommen.
Titel: Re: Hilfe zu Matlab
Beitrag von: Sensor am 04. Juli 2008, 17:45:01
OK das man Vektoren nicht durch eins teilen kann habe ich nicht bedacht. Danke für den Tip.

ZitatIch frage mich nur, was (x.*5) bedeuten soll!? (bzw. was bewirkt der Punkt?)

Das bewirkt das jedes Element des Vektors mit einbezogen wird. Lässt man den Punkt weg bekommt man nur ein Ergebnis. Da Matlab mit dem letzten Wert des Vektors rechnet. Und mit dem Punkt rechnet er mit jedem.
Titel: Re: Hilfe zu Matlab
Beitrag von: pazi am 04. Juli 2008, 19:36:19
Zitat von: Sensor am 04. Juli 2008, 17:45:01OK das man Vektoren nicht durch eins teilen kann habe ich nicht bedacht. Danke für den Tip.
Sorry, hatte mich falsch ausgedrückt. Richtig ist: Man darf nicht durch Vektoren teilen.
Du versuchst oben ja, 1 durch einen Vektor zu teilen. (Mal abgesehen, dass ich nicht verstehe, wozu man das machen wollen würde)
Sag vielleicht mal, was du insgesamt (bzw. eine Ebene allgemeiner) berechnen willst.


Zitat von: Sensor am 04. Juli 2008, 17:45:01Das bewirkt das jedes Element des Vektors mit einbezogen wird. Lässt man den Punkt weg bekommt man nur ein Ergebnis. Da Matlab mit dem letzten Wert des Vektors rechnet. Und mit dem Punkt rechnet er mit jedem.
Danke für die Info. Bisher habe ich in Scilab meist nur Matrizen mit Matrizen bzw. Vektoren verrechnet, daher war mir das nicht bewusst. Mal schaun, ob das in Scilab auch so ist.
Titel: Re: Hilfe zu Matlab
Beitrag von: menticide am 05. Juli 2008, 00:07:54
".*" heißt, dass jedes einzelne element einer matrize multipliziert werden soll.
prost
Titel: Re: Hilfe zu Matlab
Beitrag von: pazi am 05. Juli 2008, 02:07:42
Zitat von: menticide am 05. Juli 2008, 00:07:54".*" heißt, dass jedes einzelne element einer matrize multipliziert werden soll.
prost
Wurde schon gesagt. Aber trotzdem danke ;D.
Titel: Re: Hilfe zu Matlab
Beitrag von: Ikarus am 05. Juli 2008, 10:55:40
Du musst auch elementweise dividieren:

1 ./ (5*x)

(den Punkt vor dem Mal brauchst Du hier nicht, denn Matlab multipliziert automatisch jedes Element eines Vektors mit einem Skalar
(und 5 ist ja ein Skalar, und kein Vektor), aber für den Kehrwert musst Du Matlab mitteilen, dass Du den Kehrwert von jedem Element von 5*x haben willst, deshalb 1./(5*x)
Titel: Re: Hilfe zu Matlab
Beitrag von: Ikarus am 05. Juli 2008, 11:01:09
Zitat von: pazi am 04. Juli 2008, 19:36:19[...]
Du versuchst oben ja, 1 durch einen Vektor zu teilen. (Mal abgesehen, dass ich nicht verstehe, wozu man das machen wollen würde)
[...]

Na zum Beispiel, um die Funktion f(x) = 1/(5*x) zu plotten...

x = 0 : .01 : 5;
y = 1 ./ (5*x);
plot(x,y);
grid on
Titel: Re: Hilfe zu Matlab
Beitrag von: pazi am 05. Juli 2008, 12:01:02
Zitat von: Ikarus am 05. Juli 2008, 11:01:09Na zum Beispiel, um die Funktion f(x) = 1/(5*x) zu plotten...

Aah, jetzt kapier ich endlich, was das Ergebnis sein soll*g*. Aber meine Kommentare waren ja trotzdem passend und korrekt. ;D
Titel: Re: Hilfe zu Matlab
Beitrag von: Sensor am 05. Juli 2008, 12:15:38
Zitat von: Ikarus am 05. Juli 2008, 10:55:40Du musst auch elementweise dividieren:

1 ./ (5*x)

(den Punkt vor dem Mal brauchst Du hier nicht, denn Matlab multipliziert automatisch jedes Element eines Vektors mit einem Skalar
(und 5 ist ja ein Skalar, und kein Vektor), aber für den Kehrwert musst Du Matlab mitteilen, dass Du den Kehrwert von jedem Element von 5*x haben willst, deshalb 1./(5*x)

Danke für die Lösung. Hat jetzt wunderbar geklappt.