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

Vektor oder Array vergleichen

 

Ishildur
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 15:53     Titel: Vektor oder Array vergleichen
  Antworten mit Zitat      
Hallo zusammen
Ich bin gerade dabei Matlab zu erlernen stosse natürlich auf unzählige Fragen. Ich habe gerade folgende Situation: Ich habe eine Binärdatei im LittleEndian Format mit fopen und fread eingelesen und möchte diese nun Interpretieren. Hierfür muss ich unter Anderem den File Header validieren, um zu überprüfen, ob es sich überhaupt um ein gültiges Format handelt. Hierfür möchte ich bestimmte Felder im Header überprüfen und habe mir überlegt, dass es doch sicherlich einen einfachen Befehl gibt, um teile von Vektoren zu vergleichen, so ala memcmp in C?

Code:
// check if the parametric file doesn't contain a supported bitmap image
 if(memcmp(pHdr,"BM",2)){
  // inform the user that the parametric file doesn't contain a supported bitmap image
  printf("The Source Image file must contain a 24-Bit non-compressed bitmap file");
  return 0;
 }


Natürlich könnte ich das folgendermassen machen:
Code:
% check if the parametric file doesn't contain a supported bitmap file
 if hdr(1,1) ~= 'B' || hdr(2,1) ~= 'M'
  % inform the user that the parametric file doesn't contain a supported bitmap image
  error('The Source Image file must contain a 24-Bit non-compressed bitmap file');
 end


Und bei zwei Bytes wäre das auch nicht weiter schlimmt, aber was wenn ich dann plötzlich 200 oder 2000 bytes vergleichen möchte?

Ein weiteres Problem, auf das ich sicher immer wieder stossen werde ist die Zusammenfassung von mehreren Bytes. Beispielsweise ist die Grösse als 32-Bit Integer gespeichert und liegt nun als 4 8-Bit Integers in einem Spaltenvektor und müssen irgendwie wieder korrekt (LittleEndian) zusammengepackt und interpretiert werden...

Mfg Ishildur[/code]
_________________

Samuel Lörtscher
Bern University of Applied Sciences (BFT-TI), Biel/Bienne
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2010, 16:01     Titel:
  Antworten mit Zitat      
Hallo,

man kann Vergleichsoperationen auch auf Vektoren anwenden und erhält dann logische Vektoren. Wenn man Vektoren in ihrer Gesamtheit vergleichen will, hilft

Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 11.01.2010, 16:04     Titel:
  Antworten mit Zitat      
Hi,

Code:

tst='tst'
strcmp(tst(1:2),'ts')
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.01.2010, 16:05     Titel:
  Antworten mit Zitat      
Hallo

Matlab hat für Strings viele Vergleichsoperatoren strcmp,findstr,strfind,strmatch

so hätte ich dein Problem gelöst
Code:

if ~isempty(findstr(hdr,'BM'))
  error('The Source Image file must contain a 24-Bit non-compressed bitmap file');
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Ishildur
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 16:15     Titel:
  Antworten mit Zitat      
@derOli
Ach so geht das. Ich dachte eben, strcmp prüft genau wie bei C auf einen Null Terminator, aber super, dass das auch mit FixedLength funktioniert! Very Happy
_________________

Samuel Lörtscher
Bern University of Applied Sciences (BFT-TI), Biel/Bienne
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.