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

Bei Bedingung bestimmten Wert in Matrix ersetzen

 

jsva
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 18.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 16:06     Titel: Bei Bedingung bestimmten Wert in Matrix ersetzen
  Antworten mit Zitat      
Hallo!

Wie kann ich in einer Matrix einen Wert durch 0 ersetzen wenn ein anderer in der gleichen Zeile eine bestimmte Bedingung erfüllt (zB gleich wie der in der Zeile davor ist).

Ich habe zB. folgende Matrix:

Code:
X =

          32        6542      549848           2        6872         987
           3          64          39           2          69          98
          68         321         215          12          90           1
        9132         642          90          86           9          87
          12          79         213          86         931          30
           8          25          94        3186         604          37


und ich will wenn der Wert in der vierten Spalte gleich ist wie der in der vierten Spalte & in der Zeile davor (d.h. für uns in der zweiten und fünften Zeile) in diesen Zeilen den Wert in der letzten Spalte durch 0 ersetzen.

Das Ergebnis soll also sein:

Code:
X =

          32        6542      549848           2        6872         987
           3          64          39           2          69          0
          68         321         215          12          90           1
        9132         642          90          86           9          87
          12          79         213          86         931          0
           8          25          94        3186         604          37


Ich hoffe ihr könnt meine Frage verstehen und mir weiterhelfen Smile
Danke
Private Nachricht senden Benutzer-Profile anzeigen


gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2016, 07:38     Titel:
  Antworten mit Zitat      
Hi,

ich hoffe, ich habe deine Angaben richtig interpretiert:

Code:
A = [32   6542 549848 2    6872 987;...
     3    64   39     2    69   98;...
     68   321  215    12   90   1;...
     9132 642  90     86   9    87;...
     12   79   213    86   931  30;...
     8    25   94     3186 604  37];
 
[zm, sm] = size(A);
 
 for loop = 2:zm
     if find(A(loop,:)-A(loop-1,:) == 0) > 0
         A(loop,sm) = 0;
     end
 end


Gruß gs
_________________

Mein Seite.
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.09.2016, 02:14     Titel:
  Antworten mit Zitat      
Hallo,

Geht auch recht fix mittels logischer Operatoren.
Code:

log_set2zero = [false; diff(X(:, 4)) == 0];
X(log_set2zero, end) = 0;
 


https://de.mathworks.com/help/matlab/logical-operations.html
https://de.mathworks.com/help/matla.....hat-meet-a-condition.html

Grüße,
Seban
_________________

Richtig fragen
Debugging
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.