can i velocize it? (if possible to vectorize)

9 visualizaciones (últimos 30 días)
shamal
shamal el 1 de Oct. de 2023
Respondida: Bruno Luong el 1 de Oct. de 2023
[r,c]=size(DD);
z=find(RP_bin);
filtro=zeros(numel(z),c);
period=3; %value=from 1 to numel(z)
tic
for i=1:c
for ii=period+1:numel(z)
idx=z(ii);
idx2=max(1,MinTrade_Tab(ii,i));
s=DD(idx2:idx,i);
n=any(ismember(s,0));
filtro(ii,i)=n;
end
end
toc
  2 comentarios
dpb
dpb el 1 de Oct. de 2023
You would stand a far better chance if you explained the objective here and what the input data are instead of expecting folks to ferret it out on their own...
shamal
shamal el 1 de Oct. de 2023
Editada: shamal el 1 de Oct. de 2023
I posted the complete data I was convinced that not all this information was needed to speed up an algorithm. DD is the time series and I note if there is a value==0 between the 2 indices examined (idx and idx2)
MinTrade_Tab contains index

Iniciar sesión para comentar.

Respuesta aceptada

Bruno Luong
Bruno Luong el 1 de Oct. de 2023
On my computer the acceleratoion of Method V2 is more impressive
load('matlab_DD.mat')
load('matlab_minTrades.mat')
load('matlab_RpBin.mat')
[r,c]=size(DD);
z=find(RP_bin);
period = 0 % not provided by OP
period = 0
tic
filtro=zeros(numel(z),c);
for i=1:c
for ii=period+1:numel(z)
idx=z(ii);
idx2=max(1,MinTrade_Tab(ii,i));
s=DD(idx2:idx,i);
n=any(ismember(s,0));
filtro(ii,i)=n;
end
end
toc
Elapsed time is 0.027284 seconds.
% Method V2
tic
[m,n] = size(DD);
k = [-Inf; find(DD==0); Inf];
start = MinTrade_Tab(period+1:numel(z),:);
start = max(start,1);
stop = z(period+1:end);
kstop = stop + m * (0:n-1);
kstart = start + m * (0:n-1);
l1 = discretize(kstart,k,'IncludedEdge','right');
l2 = discretize(kstop,k,'IncludedEdge','left');
filtro2 = l1+1<=l2;
filtro2 = [zeros(period,c); filtro2];
toc
Elapsed time is 0.012275 seconds.
close all
ax1=subplot(1,2,1);
imagesc(filtro)
ax2=subplot(1,2,2);
imagesc(filtro2)
linkaxes([ax1 ax2])
% Check
isequal(filtro, filtro2)
ans = logical
1

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by