J'ai plusieurs matrices que j'ai besoin d'ajouter à une grande matrice. La grande matrice (300002x50) est divisée par 0,001 seconde et la synchronisation pour les 49 autres matrices (14250x2) est approximativement 0,02, mais pas uniformément répartie. J'ai essayé find
pour indexer les entrées des plus petites matrices dans la plus grande matrice, mais c'était trop lent. Je l'ai essayé depuis:Comment implémenter l'indexation logique plus rapidement dans matlab?
for a = 1:length(test)
aaa = abs(AF1(:,1)-test(a,1))<10^-6;
AF1(aaa,index)=test(a,2);
end
Où test
est un 14250x2 à double (time,data)
, AF1
est une double matrice 300002x50 et index
est quelle colonne en AF1
les données seront ajoutées à. C'était un peu plus rapide, mais cela prend encore 99,3% (29 minutes) du temps. Cela fonctionne comme je le veux, mais y a-t-il un moyen de le mettre en œuvre plus rapidement?
Comment vous retrouverez-vous avec 50 matrices? Probablement, il y a quelque chose à améliorer là-dedans. – Adriaan
Aussi qu'est-ce que l'index? Est-ce une deuxième boucle sur toutes les colonnes? Ou sélectionnez-vous plusieurs lignes à la fois? –
J'ai 49 ensembles de données et ils viennent tous avec leur propre synchronisation (la plus divisée par .02), mais certains sont divisés par .019 et .021, donc ce n'est pas uniforme. Les horaires ne correspondent pas entre les ensembles. – mtourtelot