|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
[C++] Moltiplicazione di una matrice per un vettore riga
Salve a tutti, nonostante abbia cercato su internet la cosa ed implementato il codice, mi escono fuori cose strane, quindi vi chiedo aiuto in merito a questa questione.
Devo ottenere un vettore riga 4x1 dalla moltiplicazione di una matrice 4x4 ed un vettore riga 4x1 Vedendolo a livello di matrici e vettori (trasposti) la situazione da ottenere e questa: nel vettore PC, metto il risultato di TC per P1. Codice:
|Pc(0) | | 1.0 0.0 0.0 0.0 | | P1(0) |
|Pc(1) | | 0.0 -1.0 0.0 0.0 | | P1(1) |
|Pc(2) | = | 0.0 0.0 -1.0 0.45 | * | P1(2) |
|Pc(3) | | 0.0 0.0 0.0 1.0 | | P1(3) |
Codice:
double P1[4] = {P.x,P.y,P.z,1.0};
double Pc[4] = {0.0, 0.0, 0.0, 0.0};
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
Pc[i] = Pc[i]+TC[i][j]*P1[j];
}
}
ma ho dei dubbi sulla corretta esecuzione di quell'operazione. E' corretta secondo voi?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Ad ogni modo, dovresti accorgertene facilmente da qualche test.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
quindi non va bene così? Devo modificare gli indici?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
E' giusta così.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Ok, allora se questa va bene, il problema starà da qualche altra parte...
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Io cmq faccio fatica a leggere codice scritto in modo così condensato, io userei più spazi (come si fa nel linguaggio naturale, ad esempio, dopo la punteggiatura):
Codice:
double P1[4] = {P.x,P.y,P.z,1.0};
double Pc[4] = {0.0, 0.0, 0.0, 0.0};
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
Pc[i] += TC[i][j] * P1[j];
}
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Ragazzi mi fate capire allora? E' giusta o sbagliata? Se è sbagliata, come devo impostare la cosa per ottenere quello che ho scritto?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
calmi, calmi!
la risposta è giusta, ho sbagliato io.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quindi vendettaa mi aveva confermato correttamente. Il prodotto di una matrice 4x4 per un vettore riga 1x4 si fa così...ok...
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Scusa mi par di ricordare che tu sei laureato in Ing. Informatica al Politecnico di Milano... e hai ancora dubbi su come moltiplicare una matrice per un vettore?!
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
A me il dubbio di quest'implementazione lo da il fatto di cosa vado fisicamente a moltiplicare e per chi...la regola della moltiplicazione matrice/vettore la conosco, e che questa implementazione è adatta sia per un vettore colonna che per uno riga, solo che mi preoccupavano gli indici, quando vado a scorrere, se effettivamente moltiplico colonna per colonna della matrice per gli elementi del vettore P1, oppure lo sto facendo riga per riga con gli elementi del vettore P1...questa è la cosa che mi creava il dubbio...
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Basta cambiare Tc[i][j] in Tc[j][i]. Però questo vale finchè la matrice rimane quadrata e di dimensione pari a quella del vettore.
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
Grazie di essere stato così disponibile. Ti auguro una buona serata.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
|
Quote:
EDIT: E' andata bene. Grazie della disponibilità.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è. Ultima modifica di DomusP45 : 13-02-2014 alle 23:17. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:50.




















