Я пишу этот маленький кусок кода, чтобы синхронизировать два финансовых временных ряда. Я загружаю некоторые данные форекс, и есть некоторые недостающие сделки. Идея здесь состоит в том, чтобы получить самый большой набор и синхронизировать других с этим.Как полностью векторизовать это?
Например у меня есть набор с, как это
a= [20010110 2310 10;
20010110 2311 20;
20010110 2313 30]
b= [20010110 2309 50;
20010110 2312 52]
и я хочу, то я получаю это
c =[20010110 2310 50;;
20010110 2311 50
20010110 2313 52]
с довольно много то же самое, как, но это только индекс ,
так я пишу это
function [setAjustado] = ajustar(SetCorreto,SetParaAjustar)
dataCorreto = SetCorreto(:,1); % get the date from the correct set
dataAjustar = SetParaAjustar(:,1); % get the date from the set to be corrected
minCorreto = SetCorreto(:,2); % get the timeframe from the correct set
minAjustar = SetParaAjustar(:,2);get the timeframe from the set to be corrected
setAjustado = zeros(size(SetCorreto)); %corrected set
idxI = dataAjustar == dataCorreto(1); %generating the first range to search
for i=2:size(SetCorreto,1)
try
if (i >1 && dataCorreto(i) ~= dataCorreto(i-1)) % if the dates are the same, i dont need to look for the range again
idxI = dataAjustar == dataCorreto(i); % generate the range to search
idxIa = find(idxI==1,1); % find the first index
end
idx = find(minAjustar(idxI)>=minCorreto(i),1) +idxIa; % find the nearest occurency in the set to be corrected to match the correct set
setAjustado(i,:) = SetParaAjustar(idx,:); %replace all the line. This line have prices close, max, low and open.
setAjustado(i,2) = minCorreto(i); %adjust the timeframe to match the correct set
catch
if i==1 % in case of i to be greater then the size of set to be corrected
a=i;
else
a= i-1;
end
setAjustado(i,:) = setAjustado(a,:); % will copy the last line created in corrected set
end
end
но им думать, что это вещь довольно медленно ... Может кто-то помочь мне, чтобы ускорить это дело?
Tks заранее!
Я не понимаю, что вы подразумеваете под «syncrhonise». Что именно вы хотите сделать? –