Estoy bastante seguro de lo que está pasando aquí es su esquema de indexación está tomando una pequeña cantidad de tiempo. No importa qué método elijas, llevará algo de tiempo, aunque hay mejores métodos. Lo lógico siempre es mejor que usar una declaración de búsqueda, pero quizás lo mejor sea simplemente usar el índice directamente. Aquí hay un código de muestra que usé para probar cosas, junto con los resultados. Tenga en cuenta que ejecuté esto usando 2010, creo que hay algún tipo de optimización que ocurre en los valores más altos, pero no estoy seguro de qué está pasando allí ... Está claro que la indexación directa parece un poco más rápida que usar una lógica , y debería ser mucho más rápido que algún tipo de declaración de hallazgo.
function time_test
time_full_test=zeros(1e3,1);
time_part_test=zeros(1e3,1);
time_direct_indexing_full=zeros(1e3,1);
time_direct_indexing_part=zeros(1e3,1);
data=rand(1e5,1);
for i=1:1e3
time_full_test(i)=complex_stuff(data);
time_part_test(i)=complex_stuff(data,i*100);
time_direct_indexing_full(i)=complex_stuff2(data);
time_direct_indexing_part(i)=complex_stuff2(data,i*100);
end
figure;plot(time_full_test);hold all;plot(time_part_test);plot(time_direct_indexing_full);plot(time_direct_indexing_part)
legend('Full Time Logic','Part Time Logic','Full Time Direct','Part Time Direct')
function time=complex_stuff(input,max_val)
tic
if ~exist('max_val','var')
mask=true(size(input));
else
mask=false(size(input));
mask(1:max_val)=true;
end
sin(input(mask).^2/4356.342).^63/345;
time=toc;
function time=complex_stuff2(input,max_val)
tic
if ~exist('max_val','var')
max_val=length(input);
end
sin(input(1:max_val).^2/4356.342).^63/345;
time=toc;

Está su 'IDX' compone de números enteros que representan posiciones en su' points.x' o es una matriz lógica? – foglerit
son números enteros de posición de regresar de un 'find (criterios)' función – zamazalotta
en lugar de 'find', trate' IDX = == points.x Criteria' (o cualquier otra lógica definida 'IDX'). De esa forma, creará una matriz lógica, que en muchos casos dará como resultado una indexación más rápida. – foglerit