WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrixwerte durch andere Matrix ersetzen

 

JohnMcLane
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.12.11
Wohnort: Bremen
Version: 2008b
     Beitrag Verfasst am: 04.01.2012, 13:13     Titel: Matrixwerte durch andere Matrix ersetzen
  Antworten mit Zitat      
Hallo,

ich bins mal wieder! Sad

Ich möchte Wertebereiche einer 150x150 Matrix durch eine andere Matrix ersetzen. (Die ist 26x26).

Dabei weiß ich jedes mal, wo ca die Mitte der 26x26 Matrix in der 150x150 Matrix landen soll.

Mein Ansatz war bisher:

Code:

xkoord=62; %Zielindizes, wo die neue Matrix eingefügt werden soll!
ykoord=97;

grMatrix(ykoord-13:ykoord+13, xkoord-13:xkoord+13)=klMatrix;
 


Leider schmeißt der mir dabei:
Code:
??? Subscripted assignment dimension mismatch.


Ist mein Ansatz etwas blauäugig und zu einfach gedacht? Muss ich das doch mit For-Schleifen machen? Shocked

Wie immer bei mir: Fragt, wenn was unklar ist! Very Happy

Viele Grüße

Johnny

edit: Sorry selbst drauf gekommen! Mit den Dimensionsangaben hätte ich Platz für eine 27x27 matrix geschaffen und nicht für eine 26x26! Sad
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.01.2012, 13:21     Titel:
  Antworten mit Zitat      
die fehlermeldung sagt doch schon wo das problem ist. deine dimension stimmt nicht. -13:13 ist 27 lang ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.01.2012, 13:29     Titel:
  Antworten mit Zitat      
Hallo vorher musst du die Indizes zur linearen Indizes konvertieren.
schaue dazu SUB2IND

Code:


xkoord=62; %Zielindizes, wo die neue Matrix eingefügt werden soll!
ykoord=97;
[y,x]=meshgrid(ykoord-13:ykoord+12,xkoord-13:xkoord+12)

lin_idx= sub2ind(size(grMatrix), y,x)
grMatrix(lin_idx)=klMatrix;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
JohnMcLane
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.12.11
Wohnort: Bremen
Version: 2008b
     Beitrag Verfasst am: 04.01.2012, 14:06     Titel:
  Antworten mit Zitat      
Nochmal eine Zusatzfrage, sry...

Ich habe es jetzt geschafft den Wertebereich in der großen Matrix durch den der kleinen zu ersetzen.

Leider muss ich nun noch eine Abhängigkeit einführen. So soll der Wert nur ersetzt werden, wenn der Wert in der großen Matrix an der Stelle >=0.85 ist.

Mein Ansatz:
Code:

for y=1:size(klMatrix,1)
    if grMatrix(ykoord-size(klMatrix,1)/2+y-1, xkoord-size(klMatrix,2)/2:xkoord+size(klMatrix,2)/2-1)>=0.84
        grMatrix(ykoord-size(klMatrix,1)/2+y-1, xkoord-size(klMatrix,2)/2:xkoord+size(klMatrix,2)/2-1)= klMatrix(y,:);
    end
end
 


Er soll die Zeilen damit einzeln ablaufen und wenn die Zeile der grMatrix >=0.85 ist, sie mit der klMatrix überschreiben. Ist die Zeile nicht >= 0.85 soll nichts passieren und y wird um 1 inkrementiert und ein neuer Check startet.

Aber irgendwie tut er nichts, keine Fehlermeldung, einfach kein Ergebnis! Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.01.2012, 14:27     Titel:
  Antworten mit Zitat      
Code:
grMatrix(ykoord-size(klMatrix,1)/2+y-1, xkoord-size(klMatrix,2)/2:xkoord+size(klMatrix,2)/2-1)>=0.84
 
giebt die n vektor zurück. das funst glaub ich nicht. entweder du machst 2 schleifen in denen du die elemente einzeln durchgehst, was am leichtesten ist oder du bastelst dir was anderes mit matritzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
JohnMcLane
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.12.11
Wohnort: Bremen
Version: 2008b
     Beitrag Verfasst am: 04.01.2012, 14:35     Titel:
  Antworten mit Zitat      
Alles klar, danke Dir! Smile


Mal sehen, dann probier ichs mal mit dem einzeln durchgehen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.