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

Text --> Matrix und vereinfachen nach Schema

 

KundB
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2010, 16:25     Titel: Text --> Matrix und vereinfachen nach Schema
  Antworten mit Zitat      
Hallo bin neu hier und hab gleich eine Frage,

habe eine *.txt Datei und will Diese einlesen.

Form: -Zahl,-Zahl,-Zahl,-Zahl,-Zahl,-Zahl,-Zahl,
-Zahl,-Zahl,-Zahl,-Zahl,-Zahl,-Zahl,-Zahl, usw.

Ich will das eine Matrix entsteht, die aus 144 Spalten und 73 Zeilen.

usw.

Sprich es sollen 1459 Dateien entstehen mit namen:
1_1.irgendwas
1_2.irgendwas
1_3.irgendwas
1_4.irgendwas
2_1.irgendwas usw.

Danke schonmal.
Private Nachricht senden Benutzer-Profile anzeigen


Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 08.03.2010, 16:45     Titel:
  Antworten mit Zitat      
Hi,

ich muss sagen, dass ich nicht ganz kapiere was du genau machen willst. Wenn es dir nur um das einmalige importieren einer Datei geht kannst du mal den Import Wizard probieren:

Code:


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2010, 17:04     Titel:
  Antworten mit Zitat      
ist schon mal ein anfang, aber blöde frage, wohin schreibt der die daten?

Nochma kurz, habe eine riesen txt datei, die ich in mehrere kleine aufsplitten will.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 08.03.2010, 17:09     Titel:
  Antworten mit Zitat      
Hi,

eigentlich sollte er eine Variable im Workspace anlegen. Im dritten Fenster steht links der Name, der standardmäßig dem Dateinamen ohne Extension entspricht. Den kann man aber auch umbenennen.

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2010, 18:04     Titel:
  Antworten mit Zitat      
nochmal:

ich habe eine Textdatei mit 9Spalten und 1705280 Zeilen.

Nu will ich aber 1460 xls-Dateienmit je 144 Spalten und 73Zeilen.

Am Besten sollten die Dateien wie oben heißen.

Achso, die Inputdaten sind -Zahl,.....,
-Zahl,.... usw.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 08.03.2010, 18:18     Titel:
  Antworten mit Zitat      
Hi,

die Datei hast du ja nun schon eingelesen.
Das Umformen der Matrix kannst du mit reshape oder vec2mat erledigen.
Zum speichern in xls gibt es die Funktion xlswrite.

Doku:

Code:


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2010, 18:30     Titel:
  Antworten mit Zitat      
reshape geht nicht Crying or Very sad

ich will doch aus einer txt 1460 xls dateien machen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 08.03.2010, 18:50     Titel:
  Antworten mit Zitat      
Hi,

es ist ziemlich schwer dir zu helfen, wenn du nicht mal ansatzweise versuchst zu beschreiben wo genau deine Probleme liegen.

Ich war trotzdem mal so nett, und habe in meine Glaskugel geguckt:

Code:
mat = zeros(1705280,9);

rows = 1168; % anzahl zeilen der alten matrix pro neue xls datei
mkdir('out');

for file = 0:1459
    temp = reshape(mat(rows*file+1:rows*file+rows,:),73,144);
    xlswrite(['out\file' num2str(file+1)], temp);
end


Wenn mat deine eingelesene Matrix ist, schreibt der Code dir den n-ten 1168x9 Abschnitt der Matrix in eine xls Datei im Ordner \out

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 11:21     Titel:
  Antworten mit Zitat      
funzt Very Happy

So neues Prob (ähnlich)

Will die nun geschrieben xls Dateien einlesen, bearbeiten und wieder neu schreiben

jetzt kommt laufend kopiergeschütz und schon offen als fehlermeldung obwohl es gar nicht offen ist.

Danke nochmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 09.03.2010, 11:32     Titel:
  Antworten mit Zitat      
Hi,

lies dir bitte mal die Richtig Fragen FAQ durch: http://www.gomatlab.de/faq-richtig-fragen-t6534.html

Insbesondere dein verwendeter Code und eine genaue Fehlermeldung wäre nicht ganz uninteressant.

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 11:43     Titel:
  Antworten mit Zitat      
Ihr entschuldigt bin neu hier Rolling Eyes

Code:

function filtern

%NUMERIC=zeros(73,144);
%A=zeros(17,21);
for n=1:1%365
        for m=1:1%4          
            e=actxserver('Excel.Application');
            e.delete;
            NUMERIC = xlsread(['C:\Users\Sebasian\Desktop\Geo-Test\Originaldaten(2007)\Test\',num2str(n),'_', num2str((m-1)*6),'.xlsx']);
            for j=9:25
                for i=64:84
                    A(-8+j,-63+i)=NUMERIC(j,i);
                    xlswrite(['C:\Users\Sebastian\Desktop\Geo-Test\Originaldaten(2007)\Test\Filter\',num2str(n),'_', num2str((m-1)*6),'.xlsx'],A);
                end
            end
        end
    end
end
 


So schauts aus.

Fehlermeldung kommt erst keine aber busy, bis ich strg c drücke.
Dann logischer weise schon.
Und beim nächsten Versuch kommt dann:

??? Error using ==> xlswrite at 253
The file C:\Users\Sebastian\Desktop\Geo-Test\Originaldaten(2007)\Test\Filter\1_0.xlsx is
not writable. It may be locked by another process.

Error in ==> filtern at 13
xlswrite(['C:\Users\Sebastian\Desktop\Geo-Test\Originaldaten(2007)\Test\Filter\',num2str(n),'_',
num2str((m-1)*6),'.xlsx'],A);

Ach so, und löschen kann ich dateien auch nicht mehr. Erst nach Task-Manager besuch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 09.03.2010, 11:57     Titel:
  Antworten mit Zitat      
Nimm erstmal die beiden Zeilen mit dem actxserver raus, die benötigst du bei xlsread und xlswrite nicht.

Ich denke es ist kein Wunder, dass sich da lange nichts tut, wenn du 320 Werte einzeln in eine Excel Datei wegschreibst. xlsread und xlswrite sind nicht gerade übermäßig performant. Wenn du dann abbrichst ist die xls datei natürlich noch gelockt, und kann beim nächsten mal nicht geschrieben werden. Also erst alle Daten in MATLAB bearbeiten, und anschließend auf einmal in Excel exportieren.

Ich würde mir übrigens abgewöhnen i und j als Laufvariable zu verwenden. Eigentlich sind die als komplexe Einheit reserviert, was dann zu vielen lustigen Fehlern führen kann, wenn sie überschrieben wurden, und man eigentlich die komplexe Einheit erwartet.

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 12:04     Titel:
  Antworten mit Zitat      
so hab´s jetzt mal rausgenommen und lass es mal durchlaufen aber da warten ja noch ~1400 Dateien

Geht es irgendwie besser, schneller?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 09.03.2010, 12:16     Titel:
  Antworten mit Zitat      
Ich würde die .txt Datei nochmal einlesen, jedoch nicht direkt in xls Dateien exportieren, sondern zunächst in ein großes Cell-Array schreiben:

Code:

data = cell(1,1460);
for file = 0:1459
    data{file+1} = reshape(mat(rows*file+1:rows*file+rows,:),73,144);
end
 


Mit data{1} kannst du dann auf die erste Teilmatrix zugreifen. Im Cell-Array kannst du deine Daten dann nach Bedarf manipulieren, und anschließend exportieren.

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KundB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 12:43     Titel:
  Antworten mit Zitat      
so hab mein fehler gefunden!

das xlswrite muss doch außerhalb der schleife stehen.
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.