|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6619
|
[Matlab,C++] Tipo cella
Ciao ragazzi,
per caso sapete se esiste in C++ un tipo equivalente al tipo "cella" in Matlab? Se non esiste, come faccio a creare una cella [1X10][10x1] in C++ ? Sarei costretto a creare una matrice dinamica di 10X10 elementi ed usare solo quelli che mi servono? Però in tal modo sprecherei un sacco di spazio. Grazie! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Puoi usare i vector o crearti una classe cella ad hoc.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6619
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo...perché no...
typedef celle vector<int>; vector<celle> m; In questo modo m è una matrice. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6619
|
Quote:
Più in generale poi, se in C++ devo creare dinamicamente una matrice non quadrata del tipo 100x5, devo per forza creare 100 puntatori con 5 elementi all'interno? Magari in questo caso basta invertire gli indici. Ultima modifica di Unrue : 30-09-2007 alle 09:45. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai problemi con la memoria ? Crei qualche milione di queste strutture ? Credo che pensare allo spreco di memoria sia l'ultimo dei tuoi problemi
In ogni caso se vuoi creare una struttura ottimizzata puoi pensare a creare un gestore di celle che incapsula le celle e le gestisce sotto forma di vettore lineare. Che so...una cosa tipo questa: Codice:
class CellManager
{
int *data;
int rows;
int columns;
public:
CellManager(int rows, int columns);
int & getCell(int row, int column);
~CellManager();
};
CellManager::CellManager(int rows, int columns)
{
this.rows = rows > 0 ? rows : 1;
this.column = column > 0 ? columns : 1;
data = new int[rows * columns];
}
CellManager::~CellManager()
{
delete[] data;
}
int & getCell(int row, int column)
{
if(row >= rows || row < 0 || column >= columns || column < 0)
{
throw IndexOutOfBoundException;
}
return data[row * columns + columns];
}
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6619
|
Quote:
La soluzione che mi hai proposto è molto buona, però credo che alla fine userò delle semplici matrici bidimensionali, in cui i 2 indici interni della cella i-esima li mappo su un unico indice. Siccome uso MPI, alla fine comunque dovrei copiare tutte le celle in una matrice bidimensionale per spedirle, quindi conviene usare quelle fin da subito |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non mi sembra un buon approccio ad oggetti...
Puoi sempre aggiungere un costruttore che crea il CellManager a partire da un vettore e dalle dimensione |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6619
|
Quote:
Forse è : Codice:
return data[row * columns + column]; Codice:
return data[row * columns + columns]; |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 64
|
Ciao a tutti, senza aprire un'ulteriore topic, sono arrivato anche io ad una situazione di questo tipo, ovvero l'utilizzo dell'analogo delle celle in Matlab.
Ho pensato di creare una classe apposita, ma com'era prevedibile non ci ho azzeccato... Il problema è quello per cui ho una matrice di punti (x,y)xn_Punti da inserire all'interno di una matrice che chiamo per esempio A. In teoria chiamando A[a][b] dovrei trovare la relativa matrice di punti (x,y). Ho pensato quindi di fare una cosa del genere: class cella2d A{ int n_Punti; double Punti[n_Punti][2];}; in maniera tale da richiamare la classe e costruirla come cella2d A[a][b]; il Problema è però che in A non mi lascia definire la marice Punti con dimensioni n_Punti, quindi volevo chiederevi se fosse possibile creare una classe con al suo interno una matrice di dimensioni variabile. Grazie a tutti, Mattia |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 107
|
salve, sapreste dirmi se in matlab c'è un modo per creare matrici in cui mettere 2 elementi per ogni "cella"? e come si fa? grazie
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 107
|
Quote:
se è una domanda relativa alla sezione Scienza e Tecnica fammi sapere! Ciao grazie mille |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Tutto quello su matlab lo devi chiedere lì
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 107
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:40.




















