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

Matrix Einlesen dlmread "von - bis " mit Variable

 

ThorstenBWS
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 12:04     Titel: Matrix Einlesen dlmread "von - bis " mit Variable
  Antworten mit Zitat      
Servus zusammen,

ich hab ein kleines Problem. Ich möchte eine Matrix einlesen von der
ich aus der 1. Zeile eines ASC Files die Größe der Matrix weis.

Möchte die folgenden zeilen dann bis zu diesem Wert einlesen. Also den Einlesevorgang von der Variable Anhängig machen.

Da sich die Zeilen ändern können muss dies eine Variable sein. Nur meine Versuche gehen leider noch nicht richtig. Hoffentlich kann mir jedmand helfen

Einlesen:

Code:
%
L1 = dlmread('Matrix.asc', ' ', 'A1..A1');
L1 = 450

 


Nun kommt mein Problem, mit:

Code:
%

 L1 = dlmread('Matrix.asc', ' ', 'A2..AL1');

 


kommt ein Fehler. Möchte aber gerne ein Abhänigkeit drin haben.
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2011, 12:42     Titel:
  Antworten mit Zitat      
Hi,
versuchs mal damit:

Code:

L1 = dlmread('Matrix.asc', ' ', ['A2..A',num2str(L1)]);
 
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 13:14     Titel:
  Antworten mit Zitat      
Hi,

mit

Code:

M1 = dlmread(matix.asc', '', ['A2..A,num2str(L1)'])

 



komm leider die Meldung:

M1 =

Empty matrix: 0-by-1

...das kam leider bei vielen Versuche diese Matrix einzulesen

Was meine könnte es noch sein?
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 13:18     Titel:
  Antworten mit Zitat      
Hier wäre die Datei.

Am Anfang steht die Matrix Größe:

Matrix.txt
 Beschreibung:
Matrix

Download
 Dateiname:  Matrix.txt
 Dateigröße:  2.78 MB
 Heruntergeladen:  631 mal

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2011, 13:42     Titel:
  Antworten mit Zitat      
So?


Code:




L1 = dlmread('Matrix.txt', '\t ', 'A1..A1');
M1=dlmread('Matrix.txt', '\t',['A2..D',num2str(L1)]);
 
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 14:01     Titel:
  Antworten mit Zitat      
Super danke dir ..es geht Wink


Jetzt hab ich noch ein kleines Problem. Und zwar muss ich die Datei wieder so ausspucken damit genau 4 Leerstellen wieder vor der 1. Spalte stehen.

weißt wie man so was macht?

Ich hab schon versucht mit:

Code:
%
dlmwrite('Mt1.asc', M1, 'delimiter', ' ' ' ' ' ' ' ', ...        
            'precision', '%.f')


 


Aber da kommt eine Fehlermeldung.
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2011, 14:19     Titel:
  Antworten mit Zitat      
Mir ist nicht ganz klar, was du damit meinst.

Es gibt bei dlmwrite 'coffset' und 'roffset' (für columnoffset und rowoffset),
damit kannst du angeben ab welcher Zeile/Spalte er schreiben soll.

Das ganze könnte dann so aussehen:
Code:


dlmwrite('Mt1.asc',M1,'delimiter',' ','newline','pc','coffset',4);
 
 


So hättest du 4 Leerzeichen vor deinen Spalten.
(Beachte: der Delimiter ist hier das Leerzeichen, beim Einlesen war es tab (\t))
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 14:28     Titel:
  Antworten mit Zitat      
Grüß dich,

ja das hatte ich schon geändert.

Ah ok. ...werd es gleich mal versuchen
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 15:47     Titel:
  Antworten mit Zitat      
Gibts es eine Möglichkeit die Teile der Matrixen mit dem Befehl dlmwrite nacheinander mit mit einem Aufruf zu speichern.
Damit jeweil verschieden die Formatierung und die Abständer der Spalten in die Tabelle geladen werden kann?

So in der Art müsste das doch aussehen, oder?

Code:


dlmwrite 'Mgest1.asc',M1,'delimiter',' ','precision', '%.f','coffset',4, 'append', ...
         M2,'delimiter',' ','precision', '%.3f')

 


Oder muss man die Spalten später wieder mit Load in den Workspace holen und mit Mges =[M1, M2...] zusammenbauen?
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 15:54     Titel:
  Antworten mit Zitat      
Hab eben versuch mit Mges =[M1, M2...] die Matrix aufzubauen.

Dann sind alle Formatierungen wieder weg und die ganze Ordnung mit Coffset. Sad


Das kann also nicht der richtige weg sein. Sad

Wie kann man also die Spalten nebeneinander so anordnen?

Mit:

Code:


dlmwrite('M1t1.asc',M1,'delimiter',' ','precision', '%.f','coffset',4);  

dlmwrite('M1t1.asc',M2,'-append','delimiter', ' ','coffset',1)

 
#

Lässt sich die Formatierung nur untereinander bewerkstelligen.
_________________

Matlab Newbe

Zuletzt bearbeitet von ThorstenBWS am 08.03.2011, 16:24, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2011, 16:13     Titel:
  Antworten mit Zitat      
Du musst sie schon richtig zusammensetzen Smile
Code:

Mges=[M1;M2];
 
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 16:25     Titel:
  Antworten mit Zitat      
Smile

Und das geht dann auch mit der Formatierung? Shocked
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 16:27     Titel:
  Antworten mit Zitat      
Ne die Dateien müssen dann wieder nebeneinder stehen also:

Mges = [M1, M2]

Aber wie gesagt bei dieser Methode geht die Formatierung mit den leerzeichen verlohren.
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 08.03.2011, 16:28     Titel:
  Antworten mit Zitat      
ThorstenBWS hat Folgendes geschrieben:
Smile

Und was ist mit der Formatierung? Shocked

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2011, 16:46     Titel:
  Antworten mit Zitat      
Öh, also

Code:

dlmwrite('Mgest1.asc',[M1,M2],'delimiter',' ','precision',%.f','coffset',4,... 'newline','pc')
 


funktioniert nicht?
Ich kann mir grad nicht vorstellen, was da an der Formatierung kaputt ist.
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.