Neuigkeiten:

Keep on killing in the name of Die Ärzte! (Rod)

Hauptmenü

Hilfe zu Matlab

Begonnen von Sensor, 04. Juli 2008, 15:12:11

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Sensor

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.

pazi

#1
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.
Am Kraterrand, wo grün es thront, da hockt der kleine Frosch im Mond.

Sensor

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.

pazi

#3
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.
Am Kraterrand, wo grün es thront, da hockt der kleine Frosch im Mond.

menticide

".*" heißt, dass jedes einzelne element einer matrize multipliziert werden soll.
prost
The ocean's dying. Plankton's dying. It's people. Soylent Green is made out of people. They're making our food out of people. Next thing, they'll be breeding us like cattle for food. You've gotta tell them. You've gotta tell them! ("Soylent Green")

pazi

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.
Am Kraterrand, wo grün es thront, da hockt der kleine Frosch im Mond.

Ikarus

#6
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)

Ikarus

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

pazi

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
Am Kraterrand, wo grün es thront, da hockt der kleine Frosch im Mond.

Sensor

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.