|
|
[Anfänger] Matrix mit Skalar multiplizieren |
|
Treuben |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 30.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2008, 01:04
Titel: [Anfänger] Matrix mit Skalar multiplizieren
|
 |
Hallo!
Ich fange gerade an mich mit Matlab bzw bei mir Octave zu beschäftigen. Es geht um Multiplikation eines Skalars mit einer Matrix.
Wenn ich das ganze in die command-line eingebe funktioniert erst: Also zuerst die Matrix "A" bestimme und dann den Skalar "x".
Jetzt will ich das aber in einem function File, wobei die Multiplikation nur für A(i,j) != 0 durchgeführt werden soll.
Folgendes hab ich selber probiert:
L = [ 1 0 0; 2 2 0; 3 3 3]
x = 2
So wie das aussieht multipliziert er mit keiner 0.
Wieso krieg ich jetzt aber nicht durch eingeben von "L" in der cmd meine neue Matrix "L" sondern wieder die alte?
Gruss,
Treuben
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 30.11.2008, 01:34
Titel:
|
 |
Hallo,
weil du Rückgabewert Lx zurückgibst?
Tipp: For-Schleifen sind in Matlab nicht immer notwendig.
|
|
|
Treuben |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 30.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2008, 04:04
Titel:
|
 |
Ach! ... Danke
Ja klar, das könnte man kürzer machen.
Aber der Witz an der Sache ist, da es sich ja um eine untere Dreiecksmatrix handelt, man mit keiner 0 multiplizieren soll.
Deswegen ja die Schleife....
Wie würde ich das ganze programmieren wenn ich eine nxn untere Dreiecksmatrix will? Funktioniert das über "zeros" ?
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 01.12.2008, 09:28
Titel:
|
 |
Moin,
versuch mal einfacher zu denken, du brauchst keine Schleife, denn in der Schleife multiplizierst du genauso mit 0 wie dennys 1-Zeilen-Lsg.
Was sollte denn deiner Meinung nach rauskommen, wenn mit 0 multipliziert wird?!
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Treuben |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 30.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2008, 10:21
Titel:
|
 |
Na 0 natürlich ;P
Aber mit
for i=1:n
for j=1:i
L(i,j) = L(i,j) * x
lauf ich doch genau so zeilenweise dass ich nicht mit der 0 multiplizieren muss! d.h. ich spare Zeit beim berechnen?
Wenn ich direkt "L = L * x" schreibe multipliziert er ja mit allem und bei einer n x n unteren Dreiecksmatrix würde das in jedem Fall länger dauern als wenn er nur die Zahlen != 0 multipliziert. Das ganze natürlich zeilenweise und nicht spaltenweise(springt zu viel).
Gruss,
Treuben
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2008, 11:20
Titel:
|
 |
Hallo,
in der Theorie schon. Aber die interne Implementierung (L*x) ist viel schneller als die Implementierung, die du vorschlägst, weil sie direkt in C geschrieben ist (da muss nicht alles erst geladen werden, Speicher alloziert, in ein Java-Objekt reingeschrieben usw.). Es würde sich vielleicht lohnen, bei Matrizen großer Dimension das ganze so zu machen, wie du es vorschlägst. Aber selbst dann müsstest du dir ein Mex-File schreiben (d.h. eine C-Datei, die in Matlab angesprochen werden kann), um ca. einen Faktor 2 an Gewinn rauszuschlagen.
Da kannst du auch gleich die "sparse"-Funktionalität verwenden
Um es zusammenzufassen: Dein Vorschlag ist natürlich soweit gut und logisch durchdacht, allerdings scheitert es an der konkreten Implementierung bzw. am Nutzergewinn.
MfG
PS: Außerdem bin ich nicht sicher, ob Matlab nicht intern schon Multiplikationen mit 0 abgreift bzw. optimiert.
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2008, 11:26
Titel:
|
 |
Vielleicht kannst Du Dir das ein bisschen was zu sparse matrices angucken, da werden Nullen auch garnicht mehr gespeichert. Zumindest hier sollten dann Multiplikationen mit 0 explizit nicht ausgeführt werden, bei normalen Matrizen weiß ich es jetzt garnicht.
|
|
|
Treuben |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 30.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2008, 18:52
Titel:
|
 |
naja gut.
ich danke für euere hilfe
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|