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

Bitbreite der Differenzen darstellen

 

bmtil
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2012, 15:18     Titel: Bitbreite der Differenzen darstellen
  Antworten mit Zitat      
Hiho,
ich habe einen Algorhitmus der die Differenz von Nachbar Vektoren in einer Matrix berechnet und mir dann die maximale Differenz von jedem Differenzvektor rausgibt und plottet.
Das Problem ist, ich möchte dass nicht die Differenz dargestellt wird, sondern die Anzahl der Bits, die benötigt wird um diese Zahl darzustellen (zum Bsp. eine Differenz von 500 braucht 10 bit, usw.). Im Endeffekt fehlt mir der Befehl der den Vektor R nicht als Zahl, sondern als Bits darstellt.
Hier ist der Code:
Code:
Y = [mRawCh1(:, 1), mRawCh1(:, 2:end) - mRawCh1(:, 1:end - 1)];
>> R=max(abs(Y));
>> stem(R, 'DisplayName', 'R', 'YDataSource', 'R'); figure(gcf)
>>


Die Matrxi mRawCh1 habe ich mithochgeladen.
Vielen Dank und liebe Grueße, bmtil

raw_data.rar
 Beschreibung:

Download
 Dateiname:  raw_data.rar
 Dateigröße:  639.88 KB
 Heruntergeladen:  359 mal
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 09.07.2012, 15:28     Titel:
  Antworten mit Zitat      
hast du dir mal den Befehl "dec2bin" angesehen und dann mit "size" die Länge bzw. die Anzahl der Bits bestimmen
Private Nachricht senden Benutzer-Profile anzeigen
 
bmtil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2012, 15:33     Titel:
  Antworten mit Zitat      
ne, hab ich mir niocht nicht angesehen, ist es das was ich brauche um jeden Vektorelement des Vektors R in die Bitbreite umzuwandeln?
Ich tus gleich mal.

EDIT: witzig, hab eben Matlab zum Absturz gebracht Smile, nachdem ich dec2bin angewandt habe.

EDIT2: Spaß beiseite. Also ich wende zuerst den Befehl dec2bin auf den Vektor R an, um erstmal alle Werte des Vektors umzuwandeln. Dann benutze ich size auf den Vektor R, um die binaeren Werte als 32 bit Werte darzustellen, und dann lasse ich mir der Vektor R plotten? Seh ich das richtig? Eben so probiert und es kommt nur Mist raus.
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: 09.07.2012, 22:05     Titel:
  Antworten mit Zitat      
Hallo bmtil,

Wieso benötigt man 10 Bits für die Differenz von 500? 9 oder 6 Bits fände ich naheliegender.

Falls 9 die richtige Zahl von Bits wäre, ist DEC2BIN ein Overkill. Der Befehl glänzt sowieso nicht gerade durch Effizienz. Besser wäre:
Code:

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 11:01     Titel:
  Antworten mit Zitat      
Das mit der 500 war ja nur ein Beispiel.
Es geht halt darum die realen Differenzen in Bitlängen umzuwandeln.
Hab das eben mit sowas versucht:
Code:

E=zeros(1,451) %erstmal leeren Vektor bauen
for k=1:451
E(k)=size(dec2bin(R(k)));  %R=Resultvektor aus dem ersten Post
                               %jedes Element soll umgewandelt werden, daher for

end;
 


hat so natuerlich nicht funktioniert, so langsam gehen zerreissen meine Nerven durch die ganzen Umwandlungen.

den Befehl ceil versteh ich nicht ganz, der rundet doch nur, oder nicht?

Grueße.
Private Nachricht senden Benutzer-Profile anzeigen
 
bmtil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 20:57     Titel:
  Antworten mit Zitat      
Hab jetzt genau verstanden was der Befehl ceil macht.
Folgendes Problem gerade auf getaucht:
Code:
>> for k=1:451
E=ceil(log2(R(k)));
end;
??? Undefined function or method 'log2' for input arguments of type 'uint32'.

wie kann ich das umgehen?
grueße.
Habs hingekriegt. Endlich, Danke vielmals.
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 11.07.2012, 06:52     Titel:
  Antworten mit Zitat      
log2 dürfte keine uint32 Werte verarbeiten können. Sonst probiere es einfach mit:

Code:


oder so
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: 11.07.2012, 13:35     Titel:
  Antworten mit Zitat      
Hallo bmtil,

Das geht auch gleich "vektorisiert", also ohne Schleife:
Code:

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 13:48     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo bmtil,

Das geht auch gleich "vektorisiert", also ohne Schleife:
Code:

Gruß, Jan


Ah, cool.
Ja naja, hab das ganze jetzt mit Schleife gebaut.
Hats aber auch gedauert bis ich verstanden habe wozu der gesamte log2 da ist. Als Format hab ich auch double genommen.
Danke nochmal vielmals.
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.