|
|
Best. Werte einer Matrix ändern |
|
Mr.Radar |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 28.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.4.0
|
 |
|
|
 |
|
Verfasst am: 15.09.2008, 14:38
Titel: Best. Werte einer Matrix ändern
|
 |
Hallo,
mich quält folgendes Problem:
Gegeben sind 2 Matrizen K (:,:,i) und I mit gleichen Dimensionen. K enthält Werte vom Typ Double, I besteht aus Nullen und Einsen. Steht an einer Stelle in I eine 1, soll an genau derselben Stelle in K ein Wert m subtrahiert werden.
Wie mach ich das effizient? (Also ohne die Matrix zeilen- und spaltenweise zu durchlaufen)
Ich hatte es schon probiert mit
doch das liefert mir falsche Ergebnisse (überprüft sowohl mit spy(I) (und festgestellt, dass I fehlerfrei ist) als auch spy(K(:,:,i)) (und festgestellt, dass in K falsche Werte drinstehen) )
any hints?
|
|
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 15.09.2008, 14:46
Titel:
|
 |
Hi,
wandel die Matrix I mit
um:
.
Klappt das?
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Mr.Radar |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 28.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.4.0
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 13:44
Titel:
|
 |
nschlange hat Folgendes geschrieben: |
Klappt das? |
"Index exceeds matrix dimensions."
war der angepasste Code - leider funktionierts nicht. (K besteht aus i Matrizen, jede dieser Matrizen hat dieselbe Dimension wie I)
EDIT: Ok, das mit der i-ten Dimension dürfte nicht gepasst haben. Ich hab jetzt folgenden Workaround:
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 14:20
Titel:
|
 |
Hi,
ups, die 3. Dimension hab ich überlesen.
Ich würde I entsprechend anpassen:
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Mr.Radar |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 28.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.4.0
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 14:38
Titel:
|
 |
ohne es probiert zu haben, aber: nachdem das ganze innerhalb einer schleife abläuft, habe ich ein konkretes i, und möchte eben nur die "teilmatrix" K(:,:,i) mit Hilfe von I verändern - aber dein vorschlag würde ja das ganze K ändern, oder?
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 14:55
Titel:
|
 |
Ja, das ganze K würde geändert.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 15:37
Titel:
|
 |
Willst du denn das gleiche I auf alle Untermatrizen von K anwenden (mit dem gelichen m) oder ändern sich innerhalb der Schleife irgendwelche Variablen?
Wenn nicht, dann sollte der Code von nschlange zu dem gleichien Ergebnis wie deine Schleife führen...
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?
|
|
|
Mr.Radar |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 28.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.4.0
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 18:36
Titel:
|
 |
nein, I und m ändern sich in jeder Schleifeniteration.
(Hintergrund: Ich baue mit der Schleife 12 Filterkerne K(:,:,i) f. i=1,..,12. m ist der Mittelwert von K(:,:,i), I ist sozusagen "Indikatormatrix", überall wo in ihr eine 1 steht, wurde ein Wert in den dazupassenden Filterkern geschrieben, und dort muss dann der Mittelwert m abgezogen werden.)
|
|
|
student |

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 10.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.0
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 18:54
Titel:
|
 |
vieleicht versteh ich deine Frage nicht richtig, aber so wie ich das sehe, sollte das ganz einfach gehen.
mit dim(K)=dim(I)
und m = double
(überall wo I(.,.,.)==0 wird nichts abgezogen, dort wo I(.,.,.)=1 wird 1*m, also m subtrahiert...)
Gruss
Student
|
|
|
Mr.Radar |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 28.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.4.0
|
 |
|
|
 |
|
Verfasst am: 16.09.2008, 19:12
Titel:
|
 |
student hat Folgendes geschrieben: |
vieleicht versteh ich deine Frage nicht richtig, aber so wie ich das sehe, sollte das ganz einfach gehen.
mit dim(K)=dim(I)
und m = double
(überall wo I(.,.,.)==0 wird nichts abgezogen, dort wo I(.,.,.)=1 wird 1*m, also m subtrahiert...)
Gruss
Student |
Mh, wieso einfach, wenns auch kompliziert geht. Ich hab wohl den Wald vor lauter Bäumen nicht gesehn
Dank dir recht herzlich!
|
|
|
|
|
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.
|