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

Index in Matrix verknüpft mit Bedingung

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2009, 13:11     Titel: Index in Matrix verknüpft mit Bedingung
  Antworten mit Zitat      
Hallo,

ich möchte gerne aus einer Matrix z.B. A=[1 3 16 20; 5 6 15 1E20; 12 8 1E20 1E20] die Spaltennummer für jede Zeile von A ausgeben in der das letzte Element mit einem Wert < 1E20 steht. Das Ergebnis für die Beispielmatrix A sollte dann sein: 4 3 2
Das Ganze möchte ich natürlich ohne Schleifen realisieren.

Herzlichen Dank.


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.03.2009, 13:48     Titel:
  Antworten mit Zitat      
Ich bin seh stolz auf diesen verschachtelten, unlesbar, aber schleifenlosen Einzeiler:
Code:

find((A(:,end)<1e20))
 


Andreas

Zuletzt bearbeitet von Andreas Goser am 17.03.2009, 13:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 17.03.2009, 13:48     Titel:
  Antworten mit Zitat      
Hallo Gast,

dies ist gewiss nicht der Weisheit letzter Schluss, aber es funktioniert und kommt ohne Schleifen aus. Nachteil: Man muss einen Umweg über ein cell array gehen. Bestimmt geht es auch noch einfacher, aber ich krieg's nicht hin.

Code:
A = [1 3 16 20; 5 6 15 1E20; 12 8 1E20 1E20];
B = num2cell(A,2)
C = cell2mat(cellfun(@(x) ...  
      length(find(x<1e20)),B,'UniformOutput',false))'


Herzliche Grüße
Bijick

P.S. Der Einzeiler von Andreas Goser gibt bei mir nur "1" zurück... Vielleicht fehlt da etwas im Code?
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.03.2009, 14:54     Titel:
  Antworten mit Zitat      
Da fehlt nix, ich hatte nur den Text anders interpretiert... Aber die "richtige" Ausgabe [4 3 2] habe ich überlesen, daher ist klar, dass mein Vorschlag nicht passt.

Rolling Eyes Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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 - 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.