Mein Problem lautet folgendermassen:
Im Struct Data_min sind Zeiten, verknüpft mit einem Modul und einer Testnummer enthalten. Das Ziel des untenstehenden Codes ist auf die enthaltene Zeit die spezifische Reaktionszeit des Tests auf dem bestimmten Modul aufzuaddieren.
Diese Zeit ist im Assay Struct enthalten, welcher für jedes Modul ein Feld besitzt (Das erste Feld enthält die Daten zum Modul 501, das zweite zu 502 etc)
k und l sind die Laufvariablen um den untenstehenden Code auf jede Zeit im Data_min anzuwenden.
In meinem Code wird jetzt im Data_min struct die Information gesucht um welches Modul es sich handelt, und darauf Die auf die Testnummer passende Reaktionszeit im Assay Struct gesucht und draufaddiert.
Code:
ifregexpi(Data_min.(x{i}){k-1,l},'501') for d=1:size(Assay.(y{1}),1) if Assay.(y{1}){d,1}==Data_min.(x{i}){k-2,l}
Data_min.(x{i}){k,l}=Data_min.(x{i}){k,l}+Assay.(y{1}){d,11};
end end end
ifregexpi(Data_min.(x{i}){k-1,l},'502') for d=1:size(Assay.(y{2}),1) if Assay.(y{2}){d,1}==Data_min.(x{i}){k-2,l}
Data_min.(x{i}){k,l}=Data_min.(x{i}){k,l}+Assay.(y{2}){d,11};
end end end
Das Problem ist nun, dass dies relativ lange dauert. Fällt irgendwem eine Lösung ein, wie man das schneller machen könnte?
Ich hoffe es ist einigermassen anschaulich erklärt.
Danke schon mal
Wiederholte Berechnungen kosten Laufzeit. Deshalb zieht man alles aus den Schleifen heraus, was möglich ist:
Code:
a = Data_min.(x{i});
ifregexpi(a{k-1,l}, '501')
q = [];
b = Assay.(y{1});
c = a{k-2, l};
e = Assay.(y{1});
for d = 1:size(b,1) if b{d,1} == c
q = a{k,l} + e{d,11};
end end if ~isempty(q)
Data_min.(x{i}){k,l} = q;
end end
Je nach Inhalt der Cells könnte es viel schneller sein STRCMP oder FIND(..., 1, 'last') zu verwenden statt "if b{s,1}==c" in einer Schleife zu testen.
Gruß, 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
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.