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

Schnelles finden von Elementen

 

Sindy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 11:13     Titel: Schnelles finden von Elementen
  Antworten mit Zitat      
Hallo alle zusammen Very Happy

hab da mal wieder eine Frage. Ich habe ein 3D-Array, welches aus verschiedensten Zahlen besteht. Diese Zahlen liegen etwa alle im Bereich von 0 bis 2000. Ich möchte nun bestimmte Zahlen in diesem Array auf 0 setzen. Welche das genau sind, wird vorher durch einen Algorithmus bestimmt.

Nun das eigentliche Problem. Wenn ich nun genau alle Zahlen auf 0 setzen will welche einen bestimmte Zahl haben, so muss ich den Array Zeilen,Spalten und Höhenweise durchgehen. Momentan realisiere ich das mit 3 for/while schleifen. Wie man sich vorstellen kann ist das ganze recht langsam. Eine Idee war es mittels find die Position der Zahlen zu ermitteln und dann diese gezielt auf 0 zu setzen. Leider kommt bei find nie was sinnvolles raus, woraus ich die Position schließen könnte.

vielleicht mal an dieser Stelle ein kleines bsp.

Code:
%

A=zeros(3,3,3); %Array aus 0en
A(2,2,2)=1;       %Mitte des Würfels ist ein 1

 


Nun ist die Frage, wie bekomme ich die Position der 1 heraus ? Bei kleinen Arrays kann man natürlich das ganze mit Schleifen realisieren aber sobald diese größe werden oder man eine vielzahl verschiedener Zahlen sucht, stirbt das ab.

Schon mal danke im Vorraus


mmz
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 11:23     Titel:
  Antworten mit Zitat      
Hi,

probier mal:

Code:

A=zeros(3,3,3); % Array aus 0en
A(2,2,2)=1;       % Mitte des Würfels ist ein 1
idx = find(A==1); % index der eins heraus finden
A(idx) = wert; % Den stellen einen neuen Wert zuweisen. In deinem Fall 0
 



grüße

Michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Sindy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 11:49     Titel:
  Antworten mit Zitat      
ok danke schonmal für die schnelle Antwort.

Also in dem bsp. geht das. Aber aus irgendeinem Grund funktioniert das nicht in meinem Algorithmuss, es scheint fast so, als ob er da irgendwas falsch macht.

ich prüfe das mal und schreibe dann nochmal
 
Sindy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 11:57     Titel:
  Antworten mit Zitat      
ok funktioniert alles Very Happy habe die falsche zahl eingelesen gehabt Embarassed

vielen Dank nochmal Very Happy
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 20.10.2010, 14:09     Titel:
  Antworten mit Zitat      
Hallo,

das geht auch noch schneller, ohne den find Befehl:

Code:

A(A==1) = 0
 


MFG

Sco
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.