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

Wie greife ich auf einzelne Elemente eins Char-Array zu?

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2017, 21:42     Titel: Wie greife ich auf einzelne Elemente eins Char-Array zu?
  Antworten mit Zitat      
Moin Leute, ich bin blutiger Matlabanfänger wie ihr gleich sicherlich feststellen werdet.

Mein Problem liegt darin, dass ich ein Skript schreiben soll welches verschiedene Zahlensysteme in ein beliebiges anderes umrechnet.

Jetzt bin ich beim Hexadezimalsystem angelangt und stehe auf dem Schlauch.

Hier gibt es ja die Möglichkeit auch die Buchstaben von A-F mit einzubringen. Wenn jetzt die Eingabe erfolgt, als Beispiel

Code:

Ausgangszahl = 123F;
 


steht das F ja für die Zahl 15, wie kann ich es am elegantesten ersetzen?
Wenn ich es mit

Code:

Ausgangszahl = '123F';

B = replace(Ausgangszahl, 'F', '15');
 


versuche erhalte ich ja die Zahl 12315, leider kann ich damit nicht weiter rechnen da in der kommenden Schleife jedes Element einzeln berechnet wird. Wie schaffe ich es nun also, dass ich den String in der Eingabe so formatiere, dass das F mit der 15 als ganzes ersetzt wird?

Ich hoffe es war halbwegs verständlich, ich weiß nicht wie ich es sonst formulieren soll.

Ich bin über jede Hilfe dankbar aber bitte versucht es so leicht wie möglich für mich zu formulieren.

Liebe Grüße


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.05.2017, 22:08     Titel:
  Antworten mit Zitat      
Hallo,

es ist ja nicht nur, dass bei Hexadezimalzahlen auch A-F vorkommen können. Auch die anderen Ziffern werden anders interpretiert, hier 1*16^3 + 2*16^2 + 3*16 + 15.

Es gibt eine Funktion, die die Umrechnung übernimmt:
Code:


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2017, 22:23     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort Smile

Dass die anderen Zahlen auch umgewandelt werden ist mir klar, das habe ich bereits mit einem Code geschafft, mein Problem waren bislang nur die Buchstaben.

Ich denke die Funktion hex2dec ist zwar schön und gut aber nicht gewollt vom Auftraggeber. Aber zur Not werde ich das berücksichtigen, vielen Dank Smile

Liebe Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.05.2017, 19:53     Titel:
  Antworten mit Zitat      
Hallo,

warum sollte ein Auftraggeber etwas gegen die Verwendung von Funktionen haben, die mit MATLAB mitgeliefert werden? Es ist doch gerade eine Stärke von MATLAB, dass eine riesige Menge von bewährten Funktionen zur Verfügung steht.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2017, 11:49     Titel:
  Antworten mit Zitat      
Das ist eine Aufgabe für die Uni, und die Dozenten sind ziemlich pingelig. Ich denke aber ich werde versuchen in diesem Fall die mitgelieferte Funktion zu verwenden da ich sonst nicht voran komme.

Liebe Grüße
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2017, 11:53     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

es ist ja nicht nur, dass bei Hexadezimalzahlen auch A-F vorkommen können. Auch die anderen Ziffern werden anders interpretiert, hier 1*16^3 + 2*16^2 + 3*16 + 15.

Es gibt eine Funktion, die die Umrechnung übernimmt:
Code:


Grüße,
Harald


Mit der Funktion muss ich die Zahl im hexadezimalsystem ja als String angeben, wie kann ich die Eingabe in einer Funktion als String tätigen?
Ihr merkt, ich bin wirklich ein Anfänger und am verzweifeln Sad

Liebe Grüße
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.05.2017, 14:49     Titel:
  Antworten mit Zitat      
Hallo Anonymous,

Zitat:
Zitat:
Code:

wie kann ich die Eingabe in einer Funktion als String tätigen?

In der Code-Zeile wird doch bereits ein Input als String angegeben. Wo genau ist also das Problem?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.05.2017, 14:50     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mit der Funktion muss ich die Zahl im hexadezimalsystem ja als String angeben, wie kann ich die Eingabe in einer Funktion als String tätigen?

So, wie in meinem Beispiel oder auch den Beispielen in der Doku.

Wenn du etwas anderes versuchst und das nicht klappt, dann poste das bitte.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2017, 19:28     Titel:
  Antworten mit Zitat      
Das Problem ist, dass ich eine Funktion schreiben soll die mehrere verschiedene Zahlensysteme in einer Funktion umwandelt.

Code:

function [Zielzahl, Zielbasis] = wandelt(Ausgangszahl, Ausgangsbasis , Zielbasis)

if Ausgangsbasis == 16 && Zielbasis == 10
   
Zielzahl = hex2dec(Ausgangszahl);

end

 


Ich habe noch weitere Umwandlungen in der Funktion untergebracht die ich aber an dieser Stelle nicht poste da sie ja irrelevant sind.

Als Error bekomme ich folgendes:

Code:

>> [Zielzahl, Zielbasis] = wandelt(123F, 16 , 10)
 [Zielzahl, Zielbasis] = wandelt(123F, 16 , 10)
                                 
Error: Unexpected MATLAB expression.
 
 


Liebe Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.05.2017, 21:32     Titel:
  Antworten mit Zitat      
Hallo,

in meinem Beispiel ist die Zeichenkette in ' '.
In der Doku ist im Beispiel die Zeichenkette in ' '.

Das hat einen Grund: die ' ' werden benötigt.
Wenn du die ' ' also auch setzt, bekommst du die Fehlermeldung nicht mehr.
Code:
[Zielzahl, Zielbasis] = wandelt('123F', 16 , 10)


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2017, 15:04     Titel:
  Antworten mit Zitat      
Dankeschön. Hatte noch woanders einen Fehler wieso ich nicht weiter kam.

Jetzt frage ich mich noch, wie ich aus dem String '123F' einen Vektor in der Form [1 2 3 F] machen kann Confused Oder ist das nicht möglich?
Ich möchte dann halt der einfachheit halber das F grundsätzlich zu einer 15 machen um dann weiter zu rechnen.

Die fertigen Funktionen hex2dec dürfen wir auf Nachfrage nicht verwenden.

Liebe Grüße
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2017, 15:09     Titel:
  Antworten mit Zitat      
Ok es hat sich erledigt. Vielen lieben Dank an alle die mir geholfen haben.

Super Community hier Smile
 
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.