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

Wahrheitstabelle im Gray-Code erzeugen

 

apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 04.12.2008, 16:28     Titel: Wahrheitstabelle im Gray-Code erzeugen
  Antworten mit Zitat      
Hi all

Hier eine Funktion die eine Wahrheitstabelle im Gray-Code erstellt.
Eingang: Bitzahl
Ausgang: Matrix mit entsprechenden Einsen und Nullen

Code:

function [MGray] = graycode(Bitzahl)
% erzeugt eine Wahrheitstabelle im Gray-Code, mit der Anzahl an Bits als
% Eingangsgröße. Nach der gängigen Formel:
% Bitshift nach links -> ver-XOR-en -> Bitshift nach rechts

MGray=zeros(2^Bitzahl,Bitzahl);
for i=0:(2^Bitzahl)-1 % index um 1 verschoben um binär zu bleiben
    a=dec2bin( i ,Bitzahl+1); % Zahl erzeugen, eine stelle mehr für XOR
    b=dec2bin(2*i,Bitzahl+1); % Bitshift nach links
    for k=1:Bitzahl+1
        c(1,k)=str2num(a(k));
        d(1,k)=str2num(b(k));
        e=xor(d,c); % ver-XOR-en
    end
    for k=1:Bitzahl % Bitshift rechts passiert automatisch, da for-Schleife eine Stelle weniger
        if e(k)==true
            MGray(i+1,k)=1;
        end
    end
end

return


Quelle für die Rechnung:
http://de.wikipedia.org/wiki/Gray_code

Zeit für 7 Bits (das, was ich gerade brauche) im Schnitt 0.1 Sekunden (10 Messungen mit tic-toc)

lg,apn

edit by steve: Ich habe die MatrixNamen so umbenannt und angepasst, dass es keine Überschneidung mit Matlab-Funktionen gibt!
edit by apn: danke


Zuletzt bearbeitet von apn am 19.01.2009, 12:45, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2008, 14:20     Titel:
  Antworten mit Zitat      
kurze Optimierung:
Das
Code:

A=zeros(2^Bitzahl,Bitzahl)
 

soll natürlich heißen:
Code:

Gray=zeros(2^Bitzahl,Bitzahl)
 


um die Variable Gray nicht bei jedem Durchlauf zu erweitern.
lg,apn
 
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.