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

Betriebssystem herausfinden

 

Weberrob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2011, 13:52     Titel: Betriebssystem herausfinden
  Antworten mit Zitat      
Hallo, ich nutze seit ein paar Monaten Matlab und dementsprechend dieses Forum. Bisher habe ich immer Antworten auf meine Fragen in älteren Posts gefunden! Dafür schon einmal danke schön.

Zu meinem Problem:
Ich soll Daten einlesen... Dabei handelt es sich um mehrere Dateien, die gleichzeitig aus einem Ordner ausgewählt werden sollen.

Dafür bräucht ich eine Abfrage welches Betriebssystem genutzt wird. Schließlich sortiert Win7 das letzte object nach vorn und Win XP das erste Object nach vorn...

mit ispc, ismac und isunix komm ich nicht weiter, oder?

Ich bitte um Hilfe Smile


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.09.2011, 14:12     Titel:
  Antworten mit Zitat      
Ich glaube, dass "normale" MATLAB Befehle wie getenv, ispc, isunix, ismac, mexext nicht diese Frage beantworten.

Es ist die Frage, ob es mit ! oder winqueryreg geht. Dafür weiss nicht nicht genug über Windows.

Ich möchte aber auch anregen die Sortierthematik noch mal zu erläutern. Warum ist die Reihenfolge des OS wichtig? Warum nicht in MATLAB so sortieren wie man will?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.09.2011, 14:15     Titel:
  Antworten mit Zitat      
Hallo,

wenn es eine Umgebungsvariable gibt, die die benötigte Information enthält, oder die Information in der Registry steht, könntest du es über GETENV oder WINQUERYREG versuchen.

Ich verstehe jedoch nicht, warum die Reihenfolge dieser Anordnung dir in deinem MATLAB-Programm Problleme macht. Man spezifiziert ja normal Dateinamen und sagt nicht "die 1., die 15. und die 37. Datei bitte"?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
weberrob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2011, 14:16     Titel:
  Antworten mit Zitat      
Hallo Andreas,

danke für deine schnelle antwort.

Ich will in matlab darauf reagieren, wie das Betriebssystem mir die daten gibt...

Also es sind die daten
xy1.rpt
xy2.rpt
xy3.rpt

Win7 generiert die ausgabe zu
xy3.rpt
xy1.rpt
xy2.rpt

Win XP generiert die ausgabe zu
xy1.rpt
xy2.rpt
xy3.rpt


sodass ich dann in matlab betriebsabhängig sortieren muss...
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.09.2011, 14:19     Titel:
  Antworten mit Zitat      
DIR, STRUCT2CELL, SORT?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
weberrob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2011, 14:23     Titel:
  Antworten mit Zitat      
ahh gute idee...

da hab ich wohl zu schwierig gedacht. Ich werde es zeitnah testen

Danke schön
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.09.2011, 14:41     Titel:
  Antworten mit Zitat      
Hallo weberrob,

Matlab selbst benutzt diese Befehle um die Version des Betriebssystems zu testen:
Code:
system_dependent('getos')
system_dependent('getwinsys')
[Status, WinVersion] = dos('ver')

Allerdings sind die system_dependent Befehle nicht dokumentiert und können sich ändern. Auch der VER-Befehl in DOS ist flexibel:
Code:
!ver
% Windows XP:
% >> Microsoft Windows XP [Version 5.1.2600]
% Windows 7:
% >> Microsoft Windows [Version 6.1.7601]

Das Entziffern dieses Strings ist also auch nicht gerade konsitent.

Für MacOS habe ich dies gefunden:
Code:
[fail, input] = unix('sw_vers');
if ~fail
    OS = strrep(input, 'ProductName:', '');
    OS = strrep(OS, sprintf('\t'), '');
    OS = strrep(OS, sprintf('\n'), ' ');
    OS = strrep(OS, 'ProductVersion:', ' Version: ');
    OS = strrep(OS, 'BuildVersion:', 'Build: ');
else
    OS = system_dependent('getos');
end

Es scheint also auch hier nicht trivial zu sein.

Das Problem ist aber, dass das Betriebssystem die File-Namen gar nicht sortiert liefert, im Gegensatz zu Deiner Annahme. Man kann zwar im Windows-Explorer die Daten nach Größe, Erstellungs- oder Änderungsdatum, alphabetisch oder nach dem Type, aufsteigend oder absteigend sortieren lassen. Das kann aber für jeden Ordner einzeln ausgewählt werden und betrifft wirklich nur den Windows-Explorer. Eine Abfrage per DIR, z.B. in DOS oder in Matlab, ist davongar nicht betroffen.

Zwar gibt DIR die Filenamen in alphabetisch sortierter Reihenfolge aus, das ist aber nicht dokumentiert - weder für Matlab, noch für DOS. Man sollte sich also nicht darauf verlassen. Zudem wird es schwierig, wenn die Dateien Unicode-Zeichen verwenden. Kommt das griechische Alpha vor oder nach dem lateinischen A?

In Windows wird DIR übrigens mit den API-Funktionen FindFirstFile und FindNextFile gelöst - beide definieren ganz bewußt nicht, was genau "First" und "Next" bedeutet. Wenn man z.B. ein Netz-Laufwerk auf einem Samba-Server mounted, hat das Betriebssystem gar keine möglichkeit die Reihenfolge der Files zu beeinflussen.

Wie schon gesagt, ist deshalb DIR und eine ganz speziell an Deine Bedürfnisse angepasste Sortierung anzuraten.

Gruß, Jan
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.