Desidero generare alcuni dati che rappresentano le coordinate di una nuvola di punti che rappresentano un n-cubo di n dimensioni. Questi punti dovrebbero essere equamente distribuiti in tutto lo spazio n e dovrebbero essere generati con una spaziatura definita dall'utente tra loro. Questi dati saranno memorizzati in una matrice.C++ Come generare il set di prodotti cartesiani di tuple n-dimensionali
risposta
Ho trovato un'implementazione di cartesian product using Boost.MPL.
V'è un prodotto cartesiano reale Boost pure ma che è una direttiva del preprocessore, suppongo che è di alcuna utilità per voi.
Cheers è un esempio un po 'utile per me leggere, anche se non risponde completamente alla mia domanda. – Ben
Per semplificare le cose, ecco un esempio per un cubo ordinario, ovvero uno con 3 dimensioni. Lascia che abbia una lunghezza laterale 1 e supponi di volere punti distanziati a intervalli di 1/n. (Questo sta portando ad una distribuzione rettangolare uniforme dei punti, non del tutto certo che questo sia ciò che vuoi).
Ora alcuni pseudo-codice:
for i=0;i<=n;i++ //NB i<=n because there will be n+1 points along each axis-parallel line
for j=0;j<=n;j++
for k=0;k<=n;k++
addPointAt(i/n,j/n,k/n) //float arithmetic required here
Nota che questo non è il prodotto cartesiano di qualsiasi cosa, ma sembra soddisfare (un caso speciale) i suoi criteri. Se si desidera che i punti siano distribuiti in modo diverso, regolare gli indici di inizio e fine del ciclo o le dimensioni dell'intervallo.
Per generalizzare questo a qualsiasi dimensione superiore specificata è facile, aggiungere più loop.
Per generalizzare a qualsiasi dimensione superiore che non è nota fino a quando il tempo di esecuzione è solo leggermente più difficile. Invece di dichiarare un array N-dimensionale, dichiarare un array 1-D con lo stesso numero di elementi. Quindi devi scrivere l'aritmetica dell'indice in modo esplicito invece di scrivere il compilatore per te.
Mi aspetto che ora mi dirai che non è quello che vuoi! Se non lo si potrebbe chiarire.
Questo è quello che voglio ma quello che sto inseguendo è una soluzione generale a questo, piuttosto che a uno specifico. Questo è anche quello che sto inseguendo. Un amico ha riformulato la domanda per me. È stato difficile spiegarlo perché non ho alcun background in geometria oltre le 3 dimensioni. – Ben
@ Ben: OK, quindi la soluzione generale è che si crea un array 1-D che è una rappresentazione "appiattita" del proprio array N-D. –
Mi chiedevo come implementare la ricorsione in profondità n, anche se ho un modo generico per generare le coordinate per tutte le n-dimensioni. Avere una funzione che si chiama era un modo in cui pensavo, ma questo sembra non necessario e disordinato. – Ben
Si può fare questo in modo ricorsivo (pseudocodice):
Function Hypercube(int dimensions, int current, string partialCoords)
{
for i=0, i<=steps, i++
{
if(current==dimensions)
print partialCoords + ", " + i + ")/n";
else if current==0
Hypercube(dimensions, current+1, "("+i);
else
Hypercube(dimensions, current+1, partialCoords+", "+i);
}
}
si chiamano: Hypercube (n, 0, ""); Questo stamperà le coordinate di tutti i punti, ma puoi anche memorizzarli in una struttura.
- 1. Come simulare tuple e set in C#?
- 2. Come generare il set di alimentazione di un set in Scala
- 3. Generazione di tuple da tuple
- 4. C# API di pubblicità di prodotti Amazon
- 5. Algoritmo per la disposizione di punti cartesiani
- 6. Prodotto cartesiano di set arbitrari in Java
- 7. Fai scatter plot dal set di punti in tuple
- 8. Come posso generare un set di caratteri non UTF-8
- 9. Differenza tra tuple e set in mdx
- 10. Magento: come si ottengono prodotti associati del gruppo di prodotti?
- 11. Posso generare automaticamente i miei metodi get/set in C#?
- 12. Come generare nomi di oggetti dinamici C++?
- 13. Come generare il numero float casuale C
- 14. C# come si restituisce il set di dati da sqldatareader?
- 15. Come convertire tra tuple F # e C#?
- 16. Converti tuple-stringhe a tuple di stringhe
- 17. Riorganizza tuple di tuple in Python
- 18. Utilizzo di c: url in c: set
- 19. Il modo migliore per convertire una lista piatta in un set di due tuple in Erlang?
- 20. come impostare il set di caratteri predefinito?
- 21. Disimballaggio tuple annidate in C++
- 22. Modifica di una tupla in un vettore di tuple C++
- 23. Come interrogare il numero di tuple distinte usando SPARQL 1.1?
- 24. Catalogo prodotti query Catalogo RavenDB per aggregazione di specifiche su raccolta arbitraria di prodotti
- 25. API Magento: assegnazione di prodotti preesistenti semplici a prodotti configurabili
- 26. Magento load collection di prodotti compresi prodotti disabilitati
- 27. Python tuple to C array
- 28. Database MySQL con prodotti, categorie di prodotti e attributi diversi
- 29. Si prevede questo comportamento di uguaglianza Tuple C# 4.0?
- 30. estratto secondo elemento tuple nella lista di tuple
è questo compito? – Cetra
no, questo è un interesse personale. – Ben