goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

Physik der Halbleiterbauelemente

Studierende:
Entwicklung von Reglerstrategien für innovative Aktorik zur Kupplungsansteuerung
Kfz-Zulieferindustrie
ZF Friedrichshafen AG - Friedrichshafen

Praktikum Entwicklung von Leistungselektronik (Simulation mit Matlab / Simulink)
Energieversorgung
SMA Solar Technology AG - Niestetal

Studentische Aushilfe modellgetriebene Softwareentwicklung
Solartechnik
SMA Solar Technology AG - Niestetal

Praktikant/-in im Bereich Akustik
Kfz-Zulieferindustrie
Behr GmbH & Co. KG - Stuttgart

Praktikum im Bereich Engineering Elektrotechnik im Geschäftsfeld Prüfsysteme
Kfz-Zulieferindustrie
ZF Friedrichshafen AG - Passau

weitere Angebote

Partner:




Vermarktungspartner


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, 17: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, 13:45, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2008, 15: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



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.