|
el07aab |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2010, 10:49
Titel: Code Analyse
|
 |
Hallo Allerseits,
Könnte eventuell jemand hier mir folgenden Matlab Code erklären ?? Ich tappe damit noch ziemlich im Dunkeln.
Vielen Dank für eure Hilfe
[/code]
function [Nmin,P] = pim_order(ftx,Nmax,frxu,frxo);
M=repmat([1:Nmax-1],Nmax-1,1);
P=[];
for m=[2:length(ftx)];
for n=[1:m-1];
S=abs(M*ftx(m)-M.'*ftx(n));
S=sparse(((S>=frxu) & (S<=frxo)) .* S.*((M+M.')<=Nmax));
[k,l,s]=find(S);
P=[P;k+l,s,l,ftx(m)*ones(size(k)),k,ftx(n)*ones(size(l))];
S=abs(M*ftx(m)+M.'*ftx(n));
S=sparse(((S>=frxu) & (S<=frxo)) .* S.*((M+M.')<=Nmax));
[k,l,s]=find(S);
P=[P;k+l,s,l,ftx(m)*ones(size(k)),k,ftx(n)*ones(size(l))];
end
end
if isempty(P)
error('Nmin > Nmax, increase Nmax to determine Nmin');
else
P=sortrows(P,1);
Nmin=min(P(:,1));
end
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.07.2010, 11:13
Titel:
|
 |
Hallo el07aab,
es wäre einfacher, wenn Du etwas spezieller fragen könntest. Es ist nicht klar, nach welchem Detail Du suchst - möchtest Du wissen, dass in
die eckigen Klammern überflüssig sind und Rechenzeit verschwenden?
Ist der ":"-Operator klar oder unklar?
Fragst Du nach REPMAT?
Oder möchtest Du ganz allgemein wissen, was das Programm berechnet? Im letzteren Fall wäre der Autor die beste Quelle, weil er weiss, was er wollte.
Gruß, Jan
|
|
|
el07aab |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2010, 11:21
Titel:
|
 |
Hallo Jan,
Danke für deine frage, es stimmt ich müsste spezifischer sein.
Also unklar ist mir vor allem warum der Autor in der for Schleife 2x den selben Command ausgefuehrt hat. Hat das einen bestimmten Zweck oder würde einer genau so reichen ?
Danke nochmals
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.07.2010, 12:11
Titel:
|
 |
Hallo el07aab,
es gibt einen sehr guten Trick, um das herauszufinden:
Lasse das Porgramm einmal mit doppelten Befehlen laufen, kommentiere dann die doppelten Befehle aus und vergleiche die Ergebnisse. Natürlich kann man das auch mit einer Analyse des Codes heraus finden. Der beste Code-Analysator,den ich kenne, heißt aber immer noch "Matlab".
Viel Erfolg, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|