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

Vektoren aus Char

 

Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2008, 17:39     Titel: Vektoren aus Char
  Antworten mit Zitat      
Hallo,

Ich hätte da eine Frage zur Vektorerstellung.
Ich habe den Wert '3J' als Variable zur verfügung. Daraus soll ein Vektor entstehen der n Zeilen hat (1 Spalte), und in jeder Zeile soll der Wert '3J' auftreten. Das ganze soll am Ende mit fprintf zusammen mit anderen vektoren der Länge n in ein Text File geschrieben werden.

Leider funktioniert weder das erstellen des Vektors sinnvoll noch das schreiben ins text file.

Bis jetzt habe ich mich an cellstr und char versucht. Mit diesen bekomme ich zumindest den Vektor der größe nx2 (char) mit n Einträgen 3J. Leider lässt sich dieser Vektor aber nicht ins Text File schreiben.

Wie würdet ihr dynamisch Vektoren mit dem Eintrag '3J' definieren?

Danke


Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2008, 16:01     Titel:
  Antworten mit Zitat      
Anbei ein Beispiel meines Problems:
f und g haben die selbe Länge. In f stehen Zahlenwerte in g jeweils 3J. Das text File soll 10 Zeilen haben. In einer Spalte stehen die 1er in der nächsten 3J. Kann damit jemand was anfangen?

Danke



Code:
beginn_date = ('2008-03-21');
a = strfind(beginn_date, '-');
yr = strread(beginn_date(1:a(1)-1));
mth = strread(beginn_date((a(1)+1:a(2)-1)));

var = ((yr - 2000) * 12) + mth;

if (var >= 38 & var <= 39)
    laser = 1;
end
if (var >= 45 & var <= 47)
    laser = '2A';
end
if (var >= 50 & var <= 51)
    laser = '2B';
end
if (var >= 53 & var <= 54)
    laser = '2C';
end
if (var >= 58 & var <= 59)
    laser = '3A';
end
if (var >= 62 & var <= 63)
    laser = '3B';
end
if (var >= 65 & var <= 66)
    laser = '3C';
end
if (var >= 70 & var <= 71)
    laser = '3D';
end
if (var >= 74 & var <= 75)
    laser = '3E';
end
if (var >= 77 & var <= 78)
    laser = '3F';
end
if (var >= 82 & var <= 83)
    laser = '3G';
end
if (var >= 87 & var <= 88)
    laser = '3H';
end
if (var >= 94 & var <= 95)
    laser = '3I';
end
if (var >= 98 & var <= 99)
    laser = '3J';
end
c([1:10],:) = cellstr(laser);
g = char(c);

f(1:10,1) = 1;

id = fopen('neu.txt','w');
fprintf(id, '%2d %2s \n',  [f,g]');
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 16:24     Titel:
  Antworten mit Zitat      
Moin,

so funktionierts bei mir:
Code:
...
if (var1 >= 98 & var1 <= 99)
    laser = '3J';
end

f = ones(10,1);

id = fopen('neu.txt','w');
fprintf(id, ['%2d ' laser '\n'],  f');


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
 
Anfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2008, 11:59     Titel:
  Antworten mit Zitat      
super, Danke, funktioniert schonmal.

Was auch funktioniert ist folgendes:
Code:
for i=1:10;
     fprintf(id, '%2d %2s\n',  f(i),g(i,:) );
 end


Was aber leider gar nicht funktioniert ist, dass ich beide Beispiele in einem größeren Prgramm zum laufen bekommen.

Die Fprintf function sieht momentan so aus:
Code:
         fprintf(fid_gmt,'%14.9f %14.9f %8.3f %4d %2d %12.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %8d %8d %8d %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %5d %8d %4d %10.3f %10.3f %10.3f \n',
              [lon, lat_wgs', elev_wgs', i_surftype, i_numPk, i_dem_elev, rg_increment_pk1, rg_increment_pk2, ...
              rg_increment_pk3, rg_increment_pk4, rg_increment_pk5, rg_increment_pk6, i_sigmaelv, i_kurt, ...
              i_skew, i_LdRufLstPk, i_LandSlopeLast, i_Gamp_pk1, i_Gamp_pk2, i_Gamp_pk3, i_Gamp_pk4, ...
              i_Gamp_pk5,i_Gamp_pk6, i_Garea_pk1,i_Garea_pk2,i_Garea_pk3,i_Garea_pk4,i_Garea_pk5,...
              i_Garea_pk6, i_Gsigma_pk1,i_Gsigma_pk2,i_Gsigma_pk3,i_Gsigma_pk4,i_Gsigma_pk5,i_Gsigma_pk6,...
              i_nPeaks1, i_landvar,i_elvflag, i_beam_coelev, i_beam_azimuth, i_dem_hires_elv]');


Die Vektoren sind ziemlich lang, als Ergebnis soll in meinem Textfile als letzte Spalte die Bezeichnung 3J stehen. Problem dabei ist, dass sich 3J je nach ausgelesenem Anfangsdatum ändern kann.

Wie würdet ihr ersuchen das Problem zu lösen? Ist jetzt leider noch kein lauffähiges Beispiel, vielleicht kann sich aber trotzdem jemand rein versetzen.
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.10.2008, 07:58     Titel:
  Antworten mit Zitat      
Moin,

an sich läuft der Code von oben, ja?
Dann schreib doch einfach meinen Vorschlag mit dazu:
Code:
fprintf(fid_gmt,['%14.9f %14.9f %8.3f %4d %2d %12.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %8d %8d %8d %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %5d %8d %4d %10.3f %10.3f %10.3f ' laser '\n'],
              [lon, lat_wgs', elev_wgs', i_surftype, i_numPk, i_dem_elev, rg_increment_pk1, rg_increment_pk2, ...
              rg_increment_pk3, rg_increment_pk4, rg_increment_pk5, rg_increment_pk6, i_sigmaelv, i_kurt, ...
              i_skew, i_LdRufLstPk, i_LandSlopeLast, i_Gamp_pk1, i_Gamp_pk2, i_Gamp_pk3, i_Gamp_pk4, ...
              i_Gamp_pk5,i_Gamp_pk6, i_Garea_pk1,i_Garea_pk2,i_Garea_pk3,i_Garea_pk4,i_Garea_pk5,...
              i_Garea_pk6, i_Gsigma_pk1,i_Gsigma_pk2,i_Gsigma_pk3,i_Gsigma_pk4,i_Gsigma_pk5,i_Gsigma_pk6,...
              i_nPeaks1, i_landvar,i_elvflag, i_beam_coelev, i_beam_azimuth, i_dem_hires_elv]');


Eigentlich sollte das so funktionieren...

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
 
Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2008, 16:51     Titel:
  Antworten mit Zitat      
Leider noch nicht:

??? Error: File: read_gla14.m Line: 762 Column: 296
Unexpected MATLAB expression.

ansonsten funktioniert die Funktion einwandfrei, danke...
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.10.2008, 17:45     Titel:
  Antworten mit Zitat      
Wie lautet denn die komplette Fehlermeldung?
_________________

>> 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
 
Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 09:06     Titel:
  Antworten mit Zitat      
das ist meiner Meinung nach leider schon die komplette Fehlermeldung. Das programm bricht auch schon beim Aufruf ab und nicht erst beim fprintf aufruf, hilft dir das? Bin mittlerweile etwas ratlos. Danke für die Geduld Wink
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 14.10.2008, 10:16     Titel:
  Antworten mit Zitat      
Nein, das kann nicht die komplette Fehlermeldung sein, da Matlab bei einer "unexpected expression" immer noch mit angibt, was er nicht erwartet hat - und das fehlt bei dir...
_________________

>> 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
 
Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 11:08     Titel:
  Antworten mit Zitat      
Anbei ein screenshot, der Fehlermeldung. Wenn ich irgend nen Schmarn mach bitte schreien Wink

fehler.jpg
 Beschreibung:

Download
 Dateiname:  fehler.jpg
 Dateigröße:  177.94 KB
 Heruntergeladen:  604 mal
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 14.10.2008, 12:17     Titel:
  Antworten mit Zitat      
OK, überzeugt - dann poste mal bitte die angegebene Zeile...
_________________

>> 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
 
Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 13:13     Titel:
  Antworten mit Zitat      
Code:
fprintf(fid_gmt,'%14.9f %14.9f %8.3f %4d %2d %12.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %8d %8d %8d %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %5d %8d %4d %10.3f %10.3f %10.3f  ' laser  '\n',...
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 14.10.2008, 16:10     Titel:
  Antworten mit Zitat      
Alles klar, der Fehler liegt bei den vergessenen eckigen Klammern
Code:
fprintf(fid_gmt,['%14.9f %14.9f %8.3f %4d %2d %12.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %8d %8d %8d %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %16.3f %5d %8d %4d %10.3f %10.3f %10.3f  ' laser  '\n'],...


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
 
Andfirst

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 16:45     Titel:
  Antworten mit Zitat      
super, es funktioniert, vielen Dank. Very Happy

Nur noch eine Frage zum Verständnis: In welchem Format wird das 3J ins Textfile geschrieben? Das ist in meinem Fall wichtig, weil das Textfile anderweitig wieder gelesen werden soll. Kann ich das Format in der Schreibweise zusätzlich per Hand definieren?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 15.10.2008, 09:26     Titel:
  Antworten mit Zitat      
Was meinst du mit Format? Es wird auf die gleiche Weise reingeschrieben, wie die Zahlen auch...

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
 
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 - 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.