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

Nachkommastellen bei save Befehl.

 

demar
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2009, 18:31     Titel: Nachkommastellen bei save Befehl.
  Antworten mit Zitat      
Hallo Leute...

wahrscheinlich ist es für die meisten von euch eine einfache Sache, aber ich stehe ordentlich auf n Schlauch.
Ich will von Matlab(2007b) mir x und y Koordinaten von einer geometrischen Figur(ellipse) ausgeben lassen, um die dann die in Catia (CAD-Tool) zu inportieren. Ich schaffe es eine .txt Datei zu speichern aber die Daten sind nicht zu gebrauchen, weil am Ende der Zahlen einen Exponent hoch irgendwas steht.Damit kann Catia nichts anfangen.
Meine Frage ist:Wie kann ich beim save Befehl die Nachkommastellen auf z.B 3 reduzieren???

So sehen die Die Daten aus:

Code:
3.0000000e+000     0.0000000e+000  
  2.1728568e+000     1.5786729e+000  
  6.4424821e-001     1.9827921e+000  
 -6.4424821e-001     1.9827921e+000  
 -2.1728568e+000     1.5786729e+000  
 -3.0000000e+000     3.6739404e-016  
  3.0000000e+000     0.0000000e+000  
  3.0000000e+000     0.0000000e+000  
  3.0000000e+000     0.0000000e+000  
  3.0000000e+000     0.0000000e+000  
 -3.0000000e+000     3.6739404e-016


und so ist mein save Befehl:
Code:


ausgabe = [ x' y']
 
end

save sellipse.txt ausgabe -ascii -tabs% Speichern des Vektors ausgabe in%sellipse.txt
Private Nachricht senden Benutzer-Profile anzeigen


Ingrid
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.07.07
Wohnort: München
Version: ---
     Beitrag Verfasst am: 19.03.2009, 18:36     Titel:
  Antworten mit Zitat      
Nein geht nicht. Der Befehl fprintf erlaubt jedoch formatiertes Schreiben auf eine Datei.
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 09:29     Titel:
  Antworten mit Zitat      
du meinst das in der Form:

Code:

fid=fopen('seellipse.txt','w','n','ASCII'); %Erzeugen von Datei seeliipse.txt
fprintf(fid,'%12.2f\n',ausgabe);
fclose(fid); %schließen
 

die Ausgabe sieht aber dann so aus, dass mir nur einen Vektor von zwei gespeichert wird und zweitens wird der Vektor als Zeilen- und nicht als Spaltenvektor gespeichert.Was kann ich dagegen tun???
mein ganzer Quellcode sieht so aus:
Code:

function [xx,yy] = sellipse(a,b,n1,n)
clear all;
clc;
n=10;
a=3;
b=2;
n1=2.5;

theta = (-0:2:n)/n*pi;

theta(n+1)=pi;

r1 = 1 ./ ( (abs(cos(theta))/a).^(n1) +  (abs(sin(theta))/b).^(n1)    ).^(1/n1);

[x,y] = pol2cart(theta,r1);

ausgabe = [ x' y']
format compact
if nargout == 0
    figure(1)
    plot(x,y)
    axis equal
else
    xx = x; yy = y;
   
 
end

fid=fopen('seellipse.txt','w','n','ASCII'); %Erzeugen von Datei seeliipse.txt
fprintf(fid,'%12.2f\n',ausgabe);
fclose(fid); %schließen
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 20.03.2009, 09:39     Titel:
  Antworten mit Zitat      
demar hat Folgendes geschrieben:
du meinst das in der Form:

Code:

fid=fopen('seellipse.txt','w','n','ASCII'); %Erzeugen von Datei seeliipse.txt
fprintf(fid,'%12.2f\n',ausgabe);
fclose(fid); %schließen
 

die Ausgabe sieht aber dann so aus, dass mir nur einen Vektor von zwei gespeichert wird und zweitens wird der Vektor als Zeilen- und nicht als Spaltenvektor gespeichert.Was kann ich dagegen tun???


Du musst auch noch einen Platzhalter für die Zweite Spalte einfügen:
Code:

fid=fopen('seellipse.txt','w','n','ASCII'); %Erzeugen von Datei seeliipse.txt
fprintf(fid,'%12.2f\t%12.2f\n',ausgabe);
fclose(fid); %schließen
 


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 09:50     Titel:
  Antworten mit Zitat      
Hat leider nicht geklappt.Es wird immernoch nur ein Vektor ausgeben und immernoch als Zeilenvektor:(
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 20.03.2009, 10:06     Titel:
  Antworten mit Zitat      
dann probier mal:

Code:
fid=fopen('seellipse.txt','w','n','ASCII'); %Erzeugen von Datei seeliipse.txt
fprintf(fid,'%12.2f\t%12.2f\n',ausgabe');
fclose(fid); %schließen

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 10:28     Titel:
  Antworten mit Zitat      
also er gibt mir beide Vektoren raus aber in dieser Form:

(-3.00 -0.00 -2.17 -1.58 -0.64 -1.98 0.64 -1.98 ) und ich will sie eigentlich so haben :
Code:


       -3.00          -0.00
       -2.17          -1.58
       -0.64          -1.98
        0.64          -1.98
        2.17          -1.58
 
 
 


hast du noch eine Idee?? Echt vielen Dank schon mal!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 20.03.2009, 11:44     Titel:
  Antworten mit Zitat      
Ja, eine Idee habe ich noch:

Code:
string = sprintf('%12.2f\t%12.2f\n',ausgabe) % Erzeugen des Ausgabestrings
fid=fopen('seellipse.txt','w','n','ASCII'); % Erzeugen von Datei seeliipse.txt
fprintf(fid,string); % schreibt den Ausgabestring in die Datei
fclose(fid); % schließen


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 12:19     Titel:
  Antworten mit Zitat      
hmm...
also im Comand Window gibt Matlab das schon so aus wie ich es möchte aber nicht in der .txt-Datei Sad

Gruß Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 20.03.2009, 13:51     Titel:
  Antworten mit Zitat      
Versuchs mal hiermit:

Code:

dlmwrite('sellipse.txt',ausgabe,'delimiter', '\t','precision','%10.3f')


Bei "precision" musst du halt selbst schaun, wie du es haben möchtest.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 14:04     Titel:
  Antworten mit Zitat      
Ich hab das auch schon probiert gehabt und hatte nicht funktioniert. mit dem Code funktioniert es auch nicht!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 20.03.2009, 14:16     Titel:
  Antworten mit Zitat      
also bei mir funktioniert es, bist du dir sicher in der richtigen Datei zu schauen?

so sieht die Textdatei bei mir dann aus:
Code:

    3.000        0.000
     2.173        1.579
     0.644        1.983
    -0.644        1.983
    -2.173        1.579
    -3.000        0.000
     3.000        0.000
     3.000        0.000
     3.000        0.000
     3.000        0.000
    -3.000        0.000
 

_________________

>> why
The computer did it.

Zuletzt bearbeitet von Maddy am 20.03.2009, 14:21, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.03.2009, 14:18     Titel:
  Antworten mit Zitat      
Hallo,
wenn in Command Window funktioniert, soll auch in txt-File funktionieren.
Da muss du einfach beim fopen die flags durchprobieren ('w+' oder 'wt+').

Code:

fid=fopen('seellipse.txt','wt+','n','ASCII'); % Erzeugen von Datei seeliipse.txt
 
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2009, 14:36     Titel:
  Antworten mit Zitat      
juhuu.. mit "wt" hat es endlich geklappt. Vielen Dank Alex und Denny!!!
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 - 2024 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.