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

Formel in Matlab code übersetzen

 

foreigner
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2009, 13:09     Titel: Formel in Matlab code übersetzen
  Antworten mit Zitat      
Ich brauch für die Auswertung von Messdaten (Infrarotspektren) 2D Correlations Spektroskopie. Die Formeln um diese zu berechnen habe ich in einem Buch gefunden allerdings führt meine implementierung in Matlab nicht zu den gewünschten ergebnissen. Ich erhalte "fast richtige" ergebnisse, die optisch denen eines Programms, dass das selbe berechnet ähneln, aber wesentlich stärker verrauscht sind. Ich kann dieses Programm nicht verwenden, weil es nur daten, die in gleichmäßigen Zeitabständen gemessen wurde versteht (um ein Ergebnis zu bekommen, habe ich mit matlab aus meinen Werten Werte in gleichmäßigen Abständen interpoliert. die so erhaltenen ergenisse sind leider nur näherungsweise verwendbar)

Ich schreibe im Anschluss zuerst die Formeln aus dem Buch und dann meine Matlab Implementierung. vielleicht findet ja jemand von euch meinen Fehler. Das würde mir ziemlich helfen.

Code:


Vorlage

y[j](v) ist der Wert der Messung j bei der wellenzahl v;

t[j] ist der Zeitpunkt der Messung j


y_quer (v) =(Summe(j=1,m)(y[j](v) * (t[j+1]-t[j-1]))/(Summe(j=1,m)(t[j+1]-t[j-1]))

t[0]=2*t[1]-t[2]
t[m+1]=2*t[m]-t[m-1]

             0 für j=k
HilNod[j,k]={
             (t[k+1]-t[k-1])/(2*pi*(t[k]-t[j])) sonst


z_wave[j] (v)= Summe(k=1,m)(HilNod[j,k]*y_wave[k](v))

async(v1,v2)=1/(2*(t[m]-t[1]))*Summe(j=1,m)(y_wave[j](v1)*z_wave[j](v2)*(t[j+1]-t[j-1])

 


Und mein Matlab code

Code:


Daten werden in der Matrix input übergeben:
input=

0     t[1]       t[2] ....

v1   y[j](v1) .....

v2   ...
...


disturb=[2*input(1,2)-input(1,3) input(1,2:end) 2*input(1,end)-input(1,end-1)]';


diffs=(vertcat(disturb, 0,0) - vertcat(0,0, disturb));% t n-1 - t n+1


diffs= diffs(3:end-2);

 y_wave=input(2:end,2:end)- repmat((input(2:end,2:end)*diffs/(sum(diffs))),size(input(1,2:end))); %yj(v) - average(y(v))
 
 y_wave=y_wave';


HilNod= zeros(length(y_wave(:,1))); %calculate Hilbert Noda Matrix

    for j=1 : 1: length(y_wave(:,1))
       
       
        for k=1 :1:length(y_wave(:,1))
            if(j==k)
                HilNod(j,k)=0;
            else
                HilNod(j,k)=  (disturb (k+2)-disturb ( k))/ (2* pi* (disturb ( k+1)-disturb( j+1)));
            end

        end      

 z_wave= HilNod*(y_wave);

 async=(1/2/(input(1,end)-input(1,2))).*(y_wave'*(repmat(diffs,size(z_wave(1,:))).*z_wave))';

 


Danke im voraus!
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.