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

string

 

sade
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2011, 15:44     Titel: string
  Antworten mit Zitat      
hallo
Code:


function [Dla] = conv(zahl)  
n=length(zahl);
Dla=zeros(1,n);
for i=1:n
    deg = fix(abs(zahl(1,i)));    
     min=abs(zahl(1,i))-deg;
    minute=min*60; %minute
    a=sprintf('%d°%.3f',deg,minute)  
   Dla(1,i)=a;
end
 


wie kann ich alle a-strings in einem vektor sehen.
Dla=[a1 a2 a3.....an]
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.07.2011, 16:00     Titel: Re: string
  Antworten mit Zitat      
Hallo sade,

Dein Code überschreibt die Funktionen CONV und MIN. Das führt oft zu sehr unerwarteten Bugs, so dass man besser Variablen einen nicht belegten Namen gibt.

Strings können nicht als Elemente in einen DOUBLE Vektor geschrieben werden. Deswegen sollte Dein Programm mit einer Fehlermeldung abbrechen - davon schreibst Du aber nichts.

Eine Lösung ohne Schleife:
Code:
function Dla = convert(zahl)
z = abs(zahl(:));  % As [n x 1] vector
d = fix(z);
m = 60 * (z - d);
Dla = sprintf('%d°%.3f', transpose([d, m]));
 

Das Transponieren ist nötig, weil SPRINTF die Matrix spaltenweise ausliest.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
sade
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 10:19     Titel: Re: string
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo sade,

Dein Code überschreibt die Funktionen CONV und MIN. Das führt oft zu sehr unerwarteten Bugs, so dass man besser Variablen einen nicht belegten Namen gibt.

Strings können nicht als Elemente in einen DOUBLE Vektor geschrieben werden. Deswegen sollte Dein Programm mit einer Fehlermeldung abbrechen - davon schreibst Du aber nichts.

Eine Lösung ohne Schleife:
Code:
function Dla = convert(zahl)
z = abs(zahl(:));  % As [n x 1] vector
d = fix(z);
m = 60 * (z - d);
Dla = sprintf('%d°%.3f', transpose([d, m]));
 

Das Transponieren ist nötig, weil SPRINTF die Matrix spaltenweise ausliest.

Gruß, Jan


aber hier kriege ich als ausgabe nicht mehr rictige vektor.ich möchte wieder einen matrinx (1*n), wobei n die laenge von vektor 'zahl ' ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.07.2011, 15:57     Titel: Re: string
  Antworten mit Zitat      
Hallo sade,
Zitat:
aber hier kriege ich als ausgabe nicht mehr rictige vektor.ich möchte wieder einen matrinx (1*n), wobei n die laenge von vektor 'zahl ' ist.

Und das ist eben in Matlab nicht möglich. Es gibt keinen Vektor, der Strings als Elemente enthält. Entweder man nimmt einen String oder einen Cell String.

Gruß, Jan
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.