|
|
Veränaderung bestimmter Elemente einer Matrix |
|
dreisson |
Forum-Anfänger
|
|
Beiträge: 42
|
|
|
|
Anmeldedatum: 09.10.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.03.2008, 13:02
Titel: Veränaderung bestimmter Elemente einer Matrix
|
|
Hallo,
Ich habe folgendes Problem: bekannt sind zwei (MxM)-Matrizen A und S
die Matrix S besteht aus 0 und 1. bsp für M=3 (die Raute bedeutet nichts. Ich habe sie verwendet, so dass die Matrixdarstellung klappt)
## 1 0 0
S= 0 0 1
## 0 0 0
###a11 a12 a13
A= a21 a22 a23
###a31 a32 a33
Ziel: Entsprechend der Matrix S müssen die Element in A geändert werden. Wo 1 in der Matrix S steht, muss der entsprechende Element in A durch d*axy ersetzt werden. In dem Beispiel muss A wie folgt geändert werden:
######d*a11 a12 a13
A_end= a21 a22 d*a23
######a31 a32 a33
Ich bin leider nicht sehr gut vertraut mit den Matizenoperationen in Matlab, deshalb habe ich mir folgende Lösung ausgedacht:
Kann man dieses Problem anders lösen?
Grüsse
Dreisson
|
|
|
|
|
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 01.03.2008, 14:25
Titel:
|
|
Hi,
ein Vorschlag:
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
dreisson |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 42
|
|
|
|
Anmeldedatum: 09.10.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.03.2008, 15:49
Titel:
|
|
Danke für die Antwort.
Hier ist eine andere Lösung:
die Frage ist, ob die schneller ist oder nicht?!
|
|
|
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 01.03.2008, 16:04
Titel:
|
|
Das ließe sich z.B. mit
...
überprüfen.
Ich nehme an, dass Deine Lösung schneller sein wird.
Evtl. könnte man im anderen Code das logical mit in die
Deklaration packen, dann spart man einen Aufruf.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
dreisson |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 42
|
|
|
|
Anmeldedatum: 09.10.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.03.2008, 17:22
Titel:
|
|
in meinen ersten Programm habe ich mich auf zwischen Variablen verzichtet. So sieht es jetzt aus:
Geschwindigkeitsvergleich: S und A sind (3000x3000)-gross:
mein erstes Programm dauert 0,22s
das Programm von nschlange dauert 1,33s
mein zweites Programm A_end=(d.^S).*A
sieht zwar am elegantesten aus leider nicht am schnellsten: 0,83s
Gruss
dreisson
|
|
|
tompie |
Forum-Guru
|
|
Beiträge: 260
|
|
|
|
Anmeldedatum: 19.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: immer alles
|
|
|
|
|
|
Verfasst am: 03.03.2008, 10:32
Titel:
|
|
Hallo,
die ursprüngliche Frage war ja, an den Stellen, wo S=1 ist, A durch d*A zu ersetzen. Warum also nicht einfach direkt so programmieren?
Auf diese Weise könnte man auch noch andere Zahlen in S codieren, falls gewünscht.
Gruß tompie
|
|
|
|
|
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 - 2024
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.
|
|