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 in Textdatei speichern

 

Aiksn
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 12:36     Titel: Matrix in Textdatei speichern
  Antworten mit Zitat      
Hallo zusammen,

ich habe hier schon den ein oder anderen Thread über dieses Thema gesehen, allerdings komm ich mit den formatspecs der fprintf Funktion nicht wirklich zurecht, deswegen wollte ich nochmal speziell nachfragen.

Ich habe folgenden Code:
Code:
alphaWerte = matrix(:,2);
XausgleichWerte = matrix(:,3);
YausgleichWerte = matrix(:,4);
ZausgleichWerte = matrix(:,5);

alphaWerte = num2str(alphaWerte);
XausgleichWerte = num2str(XausgleichWerte);
YausgleichWerte = num2str(YausgleichWerte);
ZausgleichWerte = num2str(ZausgleichWerte);
anfangVektor = 1;
endeVektor = steps+1;
i=1;




for(Stelle = anfangVektor:1:endeVektor)
   Gbefehle(i,1) = '0';
   Gbefehle2(i,1) = '1';
   VektorB(i,1) = 'B';
   VektorX(i,1) = 'X';
   VektorY(i,1) = 'Y';
   VektorZ(i,1) = 'Z';
   VektorG(i,1) = 'G';
 
   i= i+1;
end
   bNeu = strcat(VektorB,alphaWerte);
   xNeu = strcat(VektorX,XausgleichWerte);
   yNeu = strcat(VektorY,YausgleichWerte);
   zNeu = strcat(VektorZ,ZausgleichWerte);
   gNeu1 = strcat(Gbefehle,Gbefehle2);
   gNeu = strcat(VektorG,gNeu1);
   GCODE = [gNeu,xNeu,yNeu,zNeu,bNeu];

Mein 'GCODE' sieht dann wie folgt aus:
G01X 3.5898Y3.6875e-16Z -7.62176B-48
G01X -1.8691Y3.8282e-16Z -4.7933B-46
G01X -2.2134Y3.9642e-16Z -11.1068B-44
G01X 3.8448Y4.0954e-16Z -8.75455B-42
G01X -0.92696Y4.2216e-16Z -4.08602B-40

Jetzt habe ich dazu 2 Fragen. Als erstes wollte ich zwischen jede der Zeilen in meinem 'GCODE' noch eine Extrazeile einfügen. Diese Extrazeile ist allerdings jedes mal die selbe. Ich hab mir überlegt das mit einer for Schleife durchlaufen zu lassen, allerdings glaube ich dass mir da Zeilen verloren gehen.
Mein zweites Problem ist, dass ichs einfach nicht hinbekomme mir den 'GCODE' in eine Textdatei speichern zu lassen.

Für jegliche Tipps wäre ich sehr dankbar.

MfG Aiksn
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: 14.11.2016, 13:46     Titel:
  Antworten mit Zitat      
Hallo,

1. sollte eigentlich kein Problem sein.
2. fprintf mit File Identifier

Beispiel:
Code:
a = (1:3)'; b = (4:6)';
fid = fopen('testfile.txt', 'w');
fprintf(fid, 'Die nächste Zeile ist \n %.2f %.2f\n', a, b);
fclose(fid);


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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 14:44     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die schnelle Antwort.
Wenn 1. kein Problem ist, könntest du mir dann verraten wie ich in der Matrix die Zeilen so verschiebe, dass jede 2te Zeile frei wird und ich da etwas neues einspeichern kann ?

Zu 2.
Ich habe versucht deinen Code abzuändern, da in meiner Matrix ja Strings stehen.
Code:
fid = fopen('testfile.txt', 'w');
fprintf(fid, '%.2s %.2s %.2s %.2s %.2s \n', gNeu,xNeu,yNeu,zNeu,bNeu);
fclose(fid);


Wenn ich das allerdings so versuche kommt da nur murks bei raus.
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: 14.11.2016, 15:53     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn 1. kein Problem ist, könntest du mir dann verraten wie ich in der Matrix die Zeilen so verschiebe, dass jede 2te Zeile frei wird und ich da etwas neues einspeichern kann ?

Das war der Zweck des Beispiels. Hast du es denn mal laufen lassen?

Zitat:
Wenn ich das allerdings so versuche kommt da nur murks bei raus.

Ein offensichtliches Problem ist, dass es bei Strings keine Nachkommastellen gibt. Das ".2" solltest du also immer weglassen.
Ansonsten die Bitte, reproduzierbaren Code zur Verfügung zu stellen oder zumindest genau zu sagen, inwiefern "Murks" herauskommt. Das lässt sich nämlich i.d.R. nicht erahnen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 16:28     Titel:
  Antworten mit Zitat      
Hallo,

das Beispiel hatte ich dann einfach falsch verstanden. Damit ist das eine Problem gelöst, danke Smile.

Okay das .2 habe ich mal weggelassen. Sieht jetzt so aus :
Code:
fid = fopen('testfile.txt', 'w');
    fprintf(fid, '%s %s %s %s %s \n', gNeu, xNeu, yNeu, zNeu,bNeu);
    fclose(fid);

Das Problem ist nun, dass er alles in eine Zeile schreibt.
Sprich es kommen alle G aus gNeu, dann alle 0 aus gNeu, dann alle 1 usw.

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG00000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ich möchte aber das es so aussieht:
G01X -3.5726Y0Z-8.51561B-48
G01X -3.657Y0Z -8.6345B-46
...

Ich weiß jetzt nicht, ob das daran liegt wie ich die Matrix zusammengebaut habe(Code steht im ersten post), oder ob es nur eine Kleinigkeit in fprintf ist.

Grüße
Aiksn
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: 14.11.2016, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

so sollte es gehen:
Code:
fid = fopen('testfile.txt', 'w');
for I = 1:size(gNeu,1)
    fprintf(fid, '%s %s %s %s %s \n', gNeu(I,:), xNeu(I,:), yNeu(I,:), zNeu(I,:),bNeu(I,:));
end
fclose(fid);


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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 17:12     Titel:
  Antworten mit Zitat      
Vielen vielen dank jetzt geht's endlich Smile.

Grüße
Aiksn
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.