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

Problem mit Einlesereihenfolge

 

snidaa
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 25.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 14:49     Titel: Problem mit Einlesereihenfolge
  Antworten mit Zitat      
hallo,
ich habe folgendes Problem.
Mein Ordner hat 101 txt-Dateien (jeweils nur 1 Zeile), die bspws:
Zitat:
test_x-achse=i_oben
heissen. das i variiert zwischen -50 über 0 bis 50.
wenn ich jetzt mit Hilfe von
Zitat:
bilder = dir('F:\Test\test_*.txt');

einen Spaltenvektor erstelle, wählt matlab eine seltsame Reihenfolge.

bsp:
bilder(1) = test_x-achse=-10_oben
bilder(2) = test_x-achse=-11_oben
bilder(11) = test_x-achse=-1_oben
bilder(12) = test_x-achse=-20_oben
bilder(95) = test_x-achse=4_oben

etc.
jetzt würde ich aber gerne eine Matrix erstellen, bei der ich jede Datei in genau ihrer Position geschrieben wird. Also an Position 1 sollte die Zeile "test_x-achse=-50_oben" stehen und die letzte Zeile sollte "test_x-achse=50_oben" sein.

um es kurz zu fassen, wie kann ich die reihenfolge, in der Matlab meine Dateien einliest, beeinflussen?

hoffentlich hat jemand von euch eine Idee.
gruß
snidaa
Private Nachricht senden Benutzer-Profile anzeigen


tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 12.07.2010, 15:00     Titel:
  Antworten mit Zitat      
Hallo,

der dir-Befehl sortiert lexigraphisch. Du kommst der Lösung sicher einen großen Schritt näher, wenn Du Deine Dateinamen mit +/- Zeichen und führenden Nullen ausstattest, also z.B.

test_x-achse=-10_oben
test_x-achse=-09_oben
test_x-achse=-08_oben
test_x-achse=-07_oben
test_x-achse=-06_oben
test_x-achse=-05_oben
test_x-achse=-04_oben
test_x-achse=-03_oben
test_x-achse=-02_oben
test_x-achse=-01_oben
test_x-achse=-00_oben
test_x-achse=+01_oben
test_x-achse=+02_oben
test_x-achse=+03_oben

usw.


Sollte das alles zu aufwendig sein, muss man eine entsprechende Sortierroutine schreiben.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
snidaa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 25.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 15:29     Titel:
  Antworten mit Zitat      
das ist leider nicht möglich, weil ich unmengen an daten habe, die alle schon benannt sind. sie umzubenennen ist leider keine option ;(
Private Nachricht senden Benutzer-Profile anzeigen
 
snidaa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 25.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 15:42     Titel:
  Antworten mit Zitat      
ich dachte jetzt iwie an sowas:
Code:

a =('test_x-achse=');
b = ('_oben ');

fid = fopen('F:\Test\Matrix.txt', 'w');
fclose(fid);

for i=1:101          
f=i-51;

fid=fopen(['F:\Test\',a,num2str(f),b,'.txt'],'r');    
    A=fscanf(fid,'%d');                    
    fclose(fid);                            
    Bild=transpose(reshape(A,867,[]));    
    B_neu = zeros(101,867);

fid=fopen('F:\Test\Matrix.txt','r+');
    fprintf(fid,'%d\t',B_neu(Bild(i),:));
    fclose(fid);

end  
 


das scheint so nicht ganz zu funktionieren.

Fehlermeldung:
??? Index exceeds matrix dimensions.
bzw.
??? Subscript indices must either be real positive integers or logicals.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.07.2010, 22:57     Titel:
  Antworten mit Zitat      
Hallo,

es ist immer hilfreich, wenn neben der vollständigen Fehlermeldung auch die Zeile angegeben wird, die den Fehler produziert hat. Auf Anhieb kann ich keinen Fehler finden, es sei denn, Du hast eine Variable "num2str" benannt...

Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
snidaa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 25.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 09:38     Titel:
  Antworten mit Zitat      
??? Subscript indices must either be real positive integers or logicals.

Error in ==> Matrix at 17
fprintf(fid,'%d\t',B_neu(Bild(i),Smile);


sorry, nächstemal sofort Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.07.2010, 00:22     Titel:
  Antworten mit Zitat      
Hallo snidaa,

Zitat:
??? Subscript indices must either be real positive integers or logicals.
Error in ==> Matrix at 17
fprintf(fid,'%d\t',B_neu(Bild(i),Smile);


Klar: Du darfst keine Smileys als Index angeben. Eigentlich logisch, oder?

Spaß beiseite: "Bild(i)" enthält offenbar eine Zahl, die kein valider Index ist, also negativ, Null oder mit Nachkommastellen.

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.