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

Darstellung der max. Differenz in jedem Vektor

 

bmtil
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 01.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2012, 11:49     Titel: Darstellung der max. Differenz in jedem Vektor
  Antworten mit Zitat      
Hiho,
ich habe einen Algorhitmus, der mir eine Differenz zwischen zwei benachbarten Vektoren in einer Matrix berechnet. Hier ist er:
Code:
br=32;
 
Irf1=int32(mRawCh1(1:4,1));       %die ersten 4 stellen, nur fuer die
Irf2=int32(mRawCh1(1:4,2));       %bessere darstellung, eigentlich 511
 
m=uint32(max(abs(Irf1-Irf2)));              % max. betrag der differenz
 
%bestimmung der breite der differenz
mm=0;
while m>0;
      m=bitshift(m,-1);      
      mm=mm+1;
end;
mm=mm+1; %bit fuer das vorzeichen (dif. kann negativ werden)
disp (['vektorbreite' num2str(mm) ' ,bit']);
 
% kodierung
groesse=size(Irf1);
N=groesse(1,1);
N2=ceil(N*mm/br);            %N2 groeße von dem neuen Difnow->soviel platz wird im µC benoetigt
DifNow=uint32(zeros(N2));
jnow = br;               %speichert die nummer des befuellten bits in Difnow
know = 1;                %speichert die nummer des befuellten elements in Difnow
for k=1:N                %schleife ueber alle elemente von Dif
    for j=mm:-1:1        %schleife ueber die befuellten elemente von Dif
      Dif=Irf1(k)-Irf2(k);
      if (j==mm),            %wenn "vorzeichen"bit
          if (Dif<0),
              DifNow(know)=bitset(DifNow(know),jnow,1); %1-flag, wenn negativ
          else
              DifNow(know)=bitset(DifNow(know),jnow,0); %0-flag wenn positiv
          end;
      else
        Dif=abs(Dif);
        b=bitget(uint32(Dif),j); %bitget arbeitet ohne bitmaske, muss man in C vermutlich anders machen
        DifNow(know)=bitset(DifNow(know),jnow,b); %selbes bei bitset
      end;  
      jnow=jnow-1;
      if (jnow==0),
          jnow=br;
          know=know+1;
      end;  
    end;    
end;
 
disp('differenz analysis (differenzvektor in dez und bin)');
for k=1:N;
  s=dec2bin(uint32(abs(Irf1(k)-Irf2(k))));  %s ist quasi die "breite" die man fuer die speicherung in
  while length(s)<(mm-1)                    %32bit zeile braucht
      s=['0' s];
  end;
  if ((Irf1(k)-Irf2(k))<0),
      s2='1';                             %vorzeichen, negativ
  else            
      s2='0';                             %vorzeichen, positiv
  end;
  disp([num2str(Irf1(k)-Irf2(k)) '-' s2 '-' s]);
end;
 
disp('neuer codierter differenzvektor in bin');
for k=1:N2;
  s=dec2bin(DifNow(k));
  while length(s)<br
      s=['0' s];
  end;
  disp(s);
end;


Die Matrix ist 511x451 elemente groß.
Ich möchte den Code so umschreiben, dass dieser Kodierungsalgorhitmus fuer alle 451 Vektoren der Matrix durchlaueft,
und das am Ende zusaetlich eine Grafik steht, wo fuer jeden Differenzvektor der Betrag der max. Differenz (also in diesem Code heisst diese mm dargestellt wird. Quasi eine Grafik: y-Achse ist die Bitbreite (Breite des jeweiligen Differenzvektors), und x-Achse ist der Index des jeweiligen Vektors.
Die Matrix mit den Daten habe ich angehangen.
Vielen Dank und Grueße.

raw_data.rar
 Beschreibung:

Download
 Dateiname:  raw_data.rar
 Dateigröße:  639.88 KB
 Heruntergeladen:  412 mal
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.