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

Teil einer Matrix mit anderer Matrix ersetzen

 

Sebi0491

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2014, 13:11     Titel: Teil einer Matrix mit anderer Matrix ersetzen
  Antworten mit Zitat      
Hallo,

ich habe eine Matrix

A=[8 5 5 8 4 7 19 15 17 15 8 9 5 4 2; 1 5 7 5 5 15 26 15 13 14 18 1 2 5 4; 2 3 7 4 15 12 19 16 14 5 2 3 8 1 4; 4 8 9 6 5 15 12 13 26 19 17 15 1 2 1]';

und

B=[0 0 0 0 0 0 1 1 1 1 0 0 0 0 0; 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0; 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0]';

Wie kann ich nun eine Matrix C erstellen, in welcher die Nullen aus B erhalten bleiben, und alle "1" in B mit den entsprechenden Elementen aus A ersetzt werden?

C sollte dann so aussehen:

C=[0 0 0 0 0 0 19 15 17 15 0 0 0 0 0; 0 0 0 0 0 15 26 15 13 14 18 0 0 0 0; 0 0 0 0 15 12 19 16 14 0 0 0 0 0 0; 0 0 0 0 0 15 12 13 26 19 17 15 0 0 0]';

Könnt mir hier jemand behilflich sein?

Gruß Sebi


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.11.2014, 13:19     Titel:
  Antworten mit Zitat      
Die Matrix B ist doch mit Sicherheit eine logische Matrix auf Grund eines Vergleichs, nämlich

Code:
B = A>=10; % 1 = Bedingung ist wahr, 0 = unwahr


Warum nun so kompliziert A und B miteinander verbinden, wenn es doch viel einfacher geht, in dem man dem umgekehrten Vergleich macht A<10 und die Elemente dann 0 setzt? Die Lösung dazu hatte ich dir bereits in deinem anderen Thread gepostet.

Code:

% Alle Werte < 10 = Null setzen
C = A;
C(C<10) = 0;
 


Zuletzt bearbeitet von DSP am 19.11.2014, 13:25, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebi0491

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2014, 13:25     Titel:
  Antworten mit Zitat      
Ja das war schon wieder eine neuer Punkt in meiner Programmierung...Tut mir leid. Ich denke da noch etwas zu kompliziert

Aber so klappts. Danke!!
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 19.11.2014, 13:52     Titel:
  Antworten mit Zitat      
Moin,

oftmals ist so eine "Maske", wie in du sie in B hast, jedoch nicht so einfach zu schreiben, sondern stammt aus komplizierten Berechnungen. Dafür kannst du dann folgenden Ansatz benutzen:
Code:
A=[8 5 5 8 4 7 19 15 17 15 8 9 5 4 2; 1 5 7 5 5 15 26 15 13 14 18 1 2 5 4; 2 3 7 4 15 12 19 16 14 5 2 3 8 1 4; 4 8 9 6 5 15 12 13 26 19 17 15 1 2 1]';
mask= A>10; % irgendeine komplizierte Rechnung liefert mask
C = zeros(size(A));
C(mask) = A(mask);


Viele Grüße,
Nras.
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.