How to efficiently match the zeros of 1 matrix with another
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, I am solving an inverse problem through simulated annealing, but the loop I use to match the zeros of my data with zeros in my model (so that the inversion is only solved for non-zero elements of data) is making my code very inefficient.
D is the data matrix of dimensions 26x12x160 with many zeros
S is my model, it has the same dimensions, I want it to have zeros where D has zeros
I am using the following loop for this
for i=1:length(D(:,1,1))
for j=1:length(D(1,:,1))
for k=1:length(D(1,1,:))
if D(i,j,k)==0
S(i,j,k)=0;
end
end
end
end
Is there a more efficient way to do this? Maybe a way to kill 1 loop? I am very inexperienced with efficient coding...
Thanks in advance
0 commentaires
Réponse acceptée
Plus de réponses (1)
Bruno Luong
le 27 Oct 2020
Modifié(e) : Bruno Luong
le 27 Oct 2020
The 3 for-loops can be shrink down to
S(D==0) = 0;
0 commentaires
Voir également
Catégories
En savoir plus sur Problem-Based Optimization Setup dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!