bonjour
je souhaiterais supprimer la boucle suivante
le problème est que je me sers de l'indice.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i=1:length(DataIn) DataOut(:,i)=sqrt(i)*DataIn(:,i) end
merci
bonjour
je souhaiterais supprimer la boucle suivante
le problème est que je me sers de l'indice.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i=1:length(DataIn) DataOut(:,i)=sqrt(i)*DataIn(:,i) end
merci
Tu trouveras quelques pistes ici => Pourquoi les matrices et les vecteurs ne s'entendent pas mieux ?
Bonjour,
Un solution doit être d'utiliser ARRAYFUN:
A valider...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DataOut = repmat(arrayfun(@sqrt,[1:length(DataIn)]),size(DataIn,1),1) .* DataIn;
Bonne journée,
Duf
merci
nul besoin de ARRAYFUN puisque
marche très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DataOut=repmat(sqrt(1:length(DataIn)),size(DataIn,1),1).*DataIn;
cela réduit déjà beaucoup le temps de calcul (de presque 8s à environ 0.6s) pour le eptit cas particulier sur lequel je l'ai testé.
je verrai si je peux encore l'optimiser en regardant toutes les solutions proposées.
Partager