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

Hexadecimal Loop

 

Jovo12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2018, 10:24     Titel: Hexadecimal Loop
  Antworten mit Zitat      
Hallo,

kennt sich jemand mit Hexadecimal Schleifen aus.

Ich würde gerne eine Schleifehochzählen lassen in Hexadecimal

Startwert 0000
Nächster Schritt 0010 usw und dies Möchte ich einer Zeile dann immer Zuweisen.

Würde mich über ein Kommentar freuen.

Mfg


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.06.2018, 02:29     Titel: Re: Hexadecimal Loop
  Antworten mit Zitat      
Hallo Jovo12,

Es gibt keine "hexadezimalen Schleifen".
Du kannst aber einfach eine Schleife mit dezimalem Zähler verwenden und ihn als Hex-code ausgeben:
Code:
for k = 0:16:160
  fprintf('%.4x\n', k);
end


Ich weiß nicht, was dies bedeutet:
Zitat:
dies Möchte ich einer Zeile dann immer Zuweisen.


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jovo12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2018, 07:02     Titel:
  Antworten mit Zitat      
Hallo,

Vielen Dank !

Das bedeutet, das immer in die nächste Zeile geschrieben werden.
Also. 1.Zeile 0000
Nächste Zeile 0010
Nächste Zeile 0020
Das habe ich damit gemeint
 
Jovo12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2018, 09:07     Titel:
  Antworten mit Zitat      
Code:
Mout = Mneu;
            Mout(:,2:end+1)=Mneu(:,1:end);      
            for idx = 1:n_row

                Mout{idx,1} =char(sprintf('%4X',idx));        
            end
           
            disp(Mout)
           
            %%Counter in Hex Umformen
            Mout_hex = Mout;
           
            for idx = 1:n_row
                hex_char = Mout_hex{idx,1};
                char_no = 1;
while hex_char(char_no)==' '                    
hex_char(char_no) = '0';
                    char_no = char_no + 1;
                end
                Mout_hex{idx,1} = hex_char;
            end
           
            disp(Mout_hex)

Hallo,
ich habe es so gemacht. Aber es beginnt von 0001 es soll aber von 0000-> 0010 usw. hochzählen. Soblad ich es von Null anfangen lasse zu zählen, wird ein Fehler ausgegeben leder will es noch so wie ich möchte.

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.08.2018, 16:40     Titel:
  Antworten mit Zitat      
Hallo Jovo12,

Als Leser kann man nicht wissen, was Dein Code tun soll. Was ist "Mneu"? Schon die ersten beiden Zeilen sind nicht klar:
Code:
Mout = Mneu;
Mout(:,2:end+1)=Mneu(:,1:end);

sprintf gibt bereits ein char zurück, so dass man das zusätzlich char() besser weglässt.

Wie wäre:
Code:
sprintfc('%04x', 0:16:100).'

Oder in modernen Matlt-Versionen:
Code:
compose('%04x', 0:16:100).'

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jovo12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2018, 08:15     Titel:
  Antworten mit Zitat      
Code:
Mout(:,2:end+1)=Mneu(:,1:end);      % Spalten verschieben
                for idx = 1:n_row
                   
                    Mout{idx,1} =char(sprintf('%.4X',idx-1)); % Hex Zähler einfügen
                    %
                end
               
                disp(Mout)

%%Counter in hexadezimal umformen
%                 Mout_hex = Mout; %Mout wird in neue Variable geschrieben
%                
%                 for idx = 1:n_row
%                     hex_char = Mout_hex{idx,1};
%                     char_no = 1; % Zähler gleich 1^setzen
%                     while hex_char(char_no)==' ' % While Schleife soll so lang nullen Setzen bis Char_no gleich 4
%                         hex_char(char_no) = '0';
%                         char_no = char_no + 1;
%                     end
%                     Mout_hex{idx,1} = hex_char;
%                 end
%                
%                 disp(Mout_hex)


Hoffe das ist verständlicher

[EDITED, Jan, Nochmals: Bitte Code-Umgebung benutzen - Danke!]
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.08.2018, 14:10     Titel:
  Antworten mit Zitat      
Hallo Jovo12,
Zitat:
Hoffe das ist verständlicher

nein, leider nicht.

Hast Du meine Antwort gelesen? Dort findest Du zwei Lösungsvorschläge.

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