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

Wie pures Kokain für den Rechner

 

MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2010, 23:32     Titel: Wie pures Kokain für den Rechner
  Antworten mit Zitat      
Liebe Community, ich weiss, der Titel ist ein bisschen 'Catchy' Laughing

Ich hab mir gedacht, das was am Programmieren so spannend ist, ist ja, es führen tausend Wege nach Rom, was eben den Unterschied ausmacht ist doch, wie elegant ein Problem gelöst wurde, oder nicht?

Ich denk jeder, der schon länger mit MatLab arbeitet hat ein paar solche Zeilen über die er stolz ist? weil man lange Nächte dran getüftelt hat um die Berechnung möglichst effizient zu gestalten.

Wäre es daher nicht nett, wenn man hier mal ne Sammlung solcher Beispiele hätte?

Das könnte zB so aussehn:
1. Was war Aufgabe? Was sollte erreicht werden? kurze Erklärung
2. technische Lösung

ich will mal einen Anfang machen:

In je einem Vektor stehen die X und Y-Koordinaten eines sich bewegenden Punktes (fluoreszierendes Protein). zB:
Code:
x=[2, 4, 6, 1, 3]
y=[3, 2, 4, 5, 4]


In einem weiteren Vektor der Frame in dem die Koordinaten registriert wurden. zB.
Code:
f=[1, 2, 3, 4, 5]

nicht zwangsläufig kontinuierlich steigend, also auch mal Lücken möglich!

Nun sollten in einem ersten Schritt die Sprungdistanzen berechnet werden um hinterher mittlere Sprungdistanzen und daraus einen Diffusionskoeffizienten ableiten zu können.

Für die Sprungdistanzen heisst das:
einschrittig zweischrittig: dreischrittig: vierschrittig:
x1-x0 x2-x0 x3-x0 x4-x0
x2-x1 x3-x1 x4-x1
x3-x2 x4-x2
x4-x3

Zuerst hatte ich mir mit zwei Schleifen zu Helfen, dann konnte ich teils Vektoriesieren und hatte nur noch eine Schleife drin. Jetzt hab ichs endlich ohne Schleife realisiert Very Happy

und so sieht der Code aus:
Code:
i = repmat((1:numel(f))',1,numel(f));
% Index-Matrix
ia = nonzeros(tril(i,-1));
iz = i(logical(flipud(tril(ones(numel(f)),-1))));
% erstellt die nötigen Index-Vektoren
x_displacement = x(ia)-x(iz);
y_displacement = y(ia)-y(iz);
steplength = f(ia)-f(iz);

das ganze wird dann folgend weiterverarbeitet
Code:
square_displacement = x_displacement.^2 + y_displacement.^2;
mean_square_displacement = nonzeros(accumarray(steplength,...
        second_moment_displacement,[],@mean));
% delay = Zeitspanne zwischen zwei Frames
log_time = log(unique(steplength)*delay);
fit = robustfit(log_time,log(mean_square_displacement)
diffusion_constant = .25*exp(fit(1))
 

Ich denk sehr viel schneller kann man dies nicht mehr machen Question

Ich hoffe ich hab hiermit ein paar weitere dazu angespornt ihre Schmuckstücke auszupacken und mal zu zeigen, ich denk dabei kann man echt noch was lernen...

gruss Christian
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.