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

Bestmögliche Zeit gesucht

 

Philipp68
Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 10.08.2020, 15:33     Titel: Bestmögliche Zeit gesucht
  Antworten mit Zitat      
Hallo,

ich muss folgende Aufgabe lösen:

Suche eine konstante Zeit t, die durch Multiplikation zweier Variablen x,y die Zeit T1 und T2 ergibt. Das Intervall für t liegt zwischen 3,759ms-10ms. Das Intervall kann auch noch bis 20ms erweitert werden. Es dürfen keine Dezimalzahlen verwendet werden, nur Natürliche.

T1 = t * x
T2 = t * y

Code:

% Duration
T1 = 133000; %microseconds
T2 = 465802; %microseconds

% Time Range t
t = 3759:10000; %microseconds
[~,size_Pt] = size(t);

t_div = zeros(1,size_Pt);
t2_div = zeros(1,size_Pt);

for m = 1:size_Pt
    t_div(1,m) = T1/t(1,m);
    t2_div(1,m) = T2/t(1,m);
end

t_div = nearest(t_div);
t2_div = nearest(t2_div);

[minDistance, indexOfMin] = min(abs(t_div-t2_div));

t_minDistance = t(1,indexOfMin); % t const.

% Divisor
x = round(T1/t_minDistance); % Divisor x
y = round(T2/t_minDistance); % Divisor y

% Result
T1_new = t_minDistance*x; % T calculated
T2_new = t_minDistance*y; % T2 calculated

T1_diff = abs(T1 - T1_new);
T2_diff = abs(T2 - T2_new);
 


In meinem Beispiel:
T1 = 133000;
T2 = 465802;

T1 und T2 können beliebig ausgewählt werden.

Das Ergbis:
T1 = 137295
T2 = 460929

Gesamtdifferenz = 598802 - 598224 = 578 (Mikrosekunden).

Ich bin mit dem Ergebnis noch nicht zufrieden, es muss doch möglich sein noch näher an die Zielzeit zu kommen. Hat jemand eine Idee wie ich noch näher an meine gewünschte Zeit komme?
Die Zeiten sind für den Duty Cycle eines Bildwechsels, der sehr oft wiederholt wird. Ist die Differenz zu groß oder klein, verändert sich ebenfalls die Frequenz und die Gesamtdauer der Darstellung.
Private Nachricht senden Benutzer-Profile anzeigen


Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 10.08.2020, 22:18     Titel:
  Antworten mit Zitat      
Ich habe hier ein verblüffend gute Lösung gefunden. Davor habe ich ständig für T1/T2 gleichzeitig ein t gesucht und dann den kleinste Differenz. Nun habe ich einfach mal nur ein t und x für T1 berechnet, dass wohl in den meisten Fällen in der Multiplikation exakt meiner Zeit entspricht und habe diesen Wert (t) für mein T2 verwendet.

Code:

%% Time 1

T1 = 68970;

% Range t
t = 3759:20000;
[~,size_Pt] = size(t);



for m = 1:size_Pt
    x(1,m) = T1/t(1,m);
end

% x to nearest int and minimum Distance between x and x_nearest
x_nearest = nearest(x);
x_diff = abs(x-x_nearest);
[~,x_min] = min(x_diff);

% Divisor
x_find_T1 = x(1,x_min);
x_find_T1 = round(x_find_T1);

% Picture % Illuminate Time
t_find = t(1,x_min);

% Compare T1 with T1_find
T1_Result = x_find_T1*t_find;

%% Time 2
T2 = 965432;

% Divisor T2
y = T2/t_find;

% Divisor to nearest int
y = nearest(y);

% Compare T2 with T2_find, used  Picture % Illuminate Time from T1
T2_Result = y*t_find;
 


Vorgabe:
T1 = 68970
T2 = 965432
Ergebnis:
T1 = 68970
T2 = 965580
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.