J'ai une question simple qui devrait avoir une réponse simple mais je ne peux pas y penser encore. Je tiens à traiter un tableau, un certain nombre d'éléments à la fois et d'emballage au début. P>
Voici un diagramme montrant quand Mes tentatives d'écrire une itération simple jusqu'à présent ont échoué: utiliser n code> est de 10 et trois éléments sont recherchés à chaque fois: p>
% n code> me donne des zéros, qui ne fonctionnent pas avec une indexation unique de Julia ... :) P>
4 Réponses :
pour do p> puis p> Si vous voulez sur l'ingénieur, ceci, ou mémoire est un problème (repmat n'est pas exactement efficace de mémoire) p>
Vous pouvez simplement le définir vous-même? Comme: où println code> pourrait être ce que vous voulez? P> p>
La fonction Il est assez simple de faire une fonction mod-indexée: p> mod1 code> est fournie pour permettre le comportement que vous désirez:
julia> threes(A) = let cy = cycle(A)
take(zip(cy, drop(cy, 1), drop(cy, 2)), length(A))
end
threes (generic function with 1 method)
julia> for (a, b, c) in threes([1, 2, 3, 4, 5])
println(a, b, c)
end
123
234
345
451
512
Une solution propre pourrait être modindex (a, i) = a [mod1. (I, fin)] code>. C'est Super Terse et vous pouvez faire de la tranchée.
Bonne réponse, exactement ce dont j'avais besoin. Merci.
Dans la définition de Circarray code> ne devrait pas
t code> dans la superclasse être remplacé par le paramètre de
t code>? (ou le paramètre a refouturé pour être le
elype code> de la matrice, avec modificateur
vecteur code> supplémentaire sur
xs code>)
itérators.jl vous donnera le Itérateur simple fort> à < em> "Accéder à un tableau Certains éléments à la fois" em>: et comme Fengyang Wang suggéra, la fonction mod1 code> est le ". Emballage rond au début " em> travail. Il suffit de faire une combinaison: p>
Vous pouvez également envisager d'utiliser cycle code> sur l'itérateur, puis
prendre code> le résultat. J'ai incorporé une solution similaire dans ma réponse.
Beau diagramme. Habituellement avant de faire
% n code> Vous devez soustraire 1, puis ajouter 1 (rappelant la transformation de base matricielle dans l'algèbre linéaire). En outre, il existe des packages qui permettent une indexation de tableaux à 0 (et autres) à base de tableaux, voir offsetArrays ( Github.com /alsam/offsetarrays.jl ).