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

Variablen auf Gleichheit prüfen

 

Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 28.01.2010, 08:56     Titel: Variablen auf Gleichheit prüfen
  Antworten mit Zitat      
Hallo zusammen,

mir hat sich gerade mal wieder eine Frage gestellt, die entweder unglaublich einfach ist (und ich ein Brett vor dem Kopf habe) oder unglaublich kompliziert. Oder irgendwo dazwischen.

Ich habe ein Cell-Array mit Dateneinträgen. Diese Dateneinträge können ganz unterschiedliche Klasse, Größen, Werte haben.

Jetzt will ich wissen, ob der Inhalt einer bestimmten Variable im Cell-Array schon vorhanden ist. Diese Variable kann nat"urlich auch aus der gleichen Menge von Klassen, Werten, Gr"o"sen kommen.

Um es auf den Punkt zu bringen: Ich habe ein Array mit total unterschiedlichem Zeugs angefüllt und will eine Variable dranhängen, wenn sie nicht schon drin ist.

Viele Grüße
Nicolas

P.S.: Der erste Ansatz, der mir einfällt, ist durch alle Eintr"age im Cell durchlaufen und dann stufenweises Prüfen:
Code:

array, inp % Variablen, die zu testen sind

da = false;
for i = 1:numel(array)
    if isreallyequal(array{i},inp)
         da = true;
         break;
   end
 end

function an = isreallyequal(a,b)
ans = false;
if ~strcmp(class(a),class(b)  return; end
if ~all(size(a)==size(b) return; end
if ~all(a == b) return; end
an = true;
 

aber das würde sicherlich ziemlich langsam.
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.01.2010, 10:44     Titel:
  Antworten mit Zitat      
Hallo,

Auf Schleife kann man hier nicht verzichten,
also wenn es langsam ist, dann muss du einfach überlegen,
ob cell array richtiges Datenformat für dich ist.

Klappt eigentlich der Vergleich nicht mit isequal
Code:

pos_eq = cellfun(@(x)isequal(x,inp), array)
array{pos_eq}
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 01.02.2010, 09:00     Titel:
  Antworten mit Zitat      
Jepp, klappt! Danke! Ist zwar nicht schneller, sieht aber matlabbiger aus :-).

Viele Grüße
Nicolas
_________________

--
The programmer suggested it.
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 - 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.