Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-01-2008, 12:16   #1
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
[c/c++] funzioni per matrici

mi servirebbero delle funzioni per lavorare con delle matrici quadrate e che mi permettano di calcolare determinanti. matrice inversa e moltiplicazioni fra matrici...
esistono?? sapete dove posso trovarle??
grazie mille
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 12:26   #2
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Ci sono molte librerie che consentono di operare con matrici in C++, Newmat è facile da usare, compatibile con diversi compilatori e relativamente completa.

Quote:
It supports matrix types: Matrix (rectangular matrix); UpperTriangularMatrix; LowerTriangularMatrix; DiagonalMatrix; SymmetricMatrix; BandMatrix; UpperBandMatrix; LowerBandMatrix; SymmetricBandMatrix; IdentityMatrix; RowVector; ColumnVector.

Only one element type (float or double) is supported.

The library includes the operations *, +, -, *=, +=, -=, Kronecker product, Schur product, concatenation, inverse, transpose, conversion between types, submatrix, determinant, Cholesky decomposition, QR triangularisation, singular value decomposition, eigenvalues of a symmetric matrix, sorting, fast Fourier and trig. transforms, printing and an interface with Numerical Recipes in C.

It is intended for matrices in the range 10 x 10 to the maximum size your machine will accommodate in a single array. The package works for very small matrices but becomes rather inefficient.

A lazy evaluation approach to evaluating matrix expressions is used to improve efficiency and reduce use of temporary storage.

I have tested the library with Borland (Builder 5,6), Microsoft (VC++ 6,7,8), Open Watcom (1.4), Intel 9 on a PC; Gnu G++ (3.3), Sun C++ on a Sun and Gnu G++ (3.4,4,4.1) and Intel 9 C++ under Linux.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:18   #3
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
[edit] mhh ma funziona solo per le 10x10 al massimo?? non si puo usare per matrici piu grandi??

Ultima modifica di mamo139 : 19-01-2008 alle 13:21.
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:24   #4
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Clicca su questo link.

Quote:
ma funziona solo per le 10x10 al massimo?? non si puo usare per matrici piu grandi??
Che significa la frase "in the range 10 x 10 to the maximum size your machine will accommodate in a single array"?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:26   #5
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da variabilepippo Guarda i messaggi
Clicca su questo link.



Che significa la frase "in the range 10 x 10 to the maximum size your machine will accommodate in a single array"?
eheh... avevo letto veloce
grazie
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:50   #6
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Come ti dicevo è molto facile da usare, ho scritto un programmino di esempio:

Codice:
#include <iostream>
#include <ctime>
#include "newmat.h"

using namespace std;

void PrintMatrix(const Matrix& X);

int main(void){
	int i,j;
	Matrix A(3, 3);
	Matrix B(3, 3);
	Matrix C(3, 3);
	srand((unsigned int)time(NULL));
	// Inizializza le matrici (nota gli indici 1-based)
	for (i = 1; i <= 3; ++i)
	for (j = 1; j <= 3; ++j)
	{
		A(i,j) = rand() % 10;
		B(i,j) = rand() % 10;
	}
	Real detA = A.determinant();
	Real detB = determinant(B);
	PrintMatrix(A);
	PrintMatrix(B);
	cout << "Det A = " << detA << endl;
	cout << "Det B = " << detB << endl;
	C = A+B;
	cout << "A+B: ";
	PrintMatrix(C);
	C = A*B;
	cout << "A*B: ";
	PrintMatrix(C);
	return 0;
}

void PrintMatrix(const Matrix& X)
{
	cout << "\nMatrix type: " << X.Type().Value() << " (";
	cout << X.Nrows() << ", ";
	cout << X.Ncols() << ")\n\n";
	if (X.IsZero()) { cout << "All elements are zero\n" << flush; return; }
	int nr=X.Nrows(); int nc=X.Ncols();
	for (int i=1; i<=nr; i++)
	{
		for (int j=1; j<=nc; j++)  cout << X(i,j) << "\t";
		cout << "\n";
	}
	cout << flush;
}
questo è l'output:

Codice:
Matrix type: Rect  (3, 3)

7       1       7
4       3       2
4       6       1

Matrix type: Rect  (3, 3)

4       7       6
2       0       6
3       0       0
Det A = 25
Det B = 126
A+B:
Matrix type: Rect  (3, 3)

11      8       13
6       3       8
7       6       1
A*B:
Matrix type: Rect  (3, 3)

51      49      48
28      28      42
31      28      60
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:56   #7
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
grazie mille, ora provo a fare quello che volevo e se ho problemi faccio vedere...
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 14:09   #8
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
ma questa libreria consente anche di fare operazioni matriciali e matrice vettore come le moltiplicazioni?
La libreria è ben documentata...
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 16:17   #9
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
è una domanda, non c'è bisogno di mettere ste faccine.
E quali faccine dovrei mettere se non queste? Hai formulato una domanda che trova una risposta ampia, esauriente e completa nella documentazione ufficiale... Non parliamo di un segreto di stato o di funzionalità non documentate, basta un pizzico di buona volontà nel leggere la documentazione, o no?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 16:52   #10
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Non vedo perché continui a lamentarti, ti ho risposto con una indicazione precisa: per verificare se la libreria soddisfa o meno le tue specifiche esigenze devi studiare la documentazione. Anche perché non hai precisato quali "operazioni matriciali" ti servono, bastano le classiche somme/prodotti/calcolo del determinante o hai bisogno del prodotto di Kronecker e della diagonalizzazione di Jordan?

Se entri da un panettiere chiedendo della carne è normale che il panettiere ti indirizzi verso il macellaio più vicino, o ti sembra una cosa tanto strana? Volendo potrebbe darti quella che ha nel frigo, ma di sicuro dal macellaio troverai tutta la carne che desideri.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 18:57   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dai su...non andiamo oltre
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2008, 18:29   #12
Corgan_
Junior Member
 
Iscritto dal: Apr 2008
Messaggi: 1
Librerie per matrici "avanzate"

Salve ragazzi,
sto lavorando ad un'applicazione che riguarda il face recognition in C++ in ambiente windows ed al punto in cui mi trovo sono obbligato a lavorare con le matrici.
Inizialmente mi sono dato da fare con le librerie che voi stessi avete consigliato, purtroppo però devo effettuare una particolare operazione che non è prevista.
L'operazione in questione è il calcolo degli autovettori a partire da una matrice. Nelle newmatt l'unico caso previsto è quello di matrici simmetriche, in realtà il calcolo di cui io mi devo occupare riguarda una matrice quadrata generica. Sapreste dirmi se esiste qualche libreria che prevede questo tipo di operazione ? Ringrazio anticipatamente chiunque volesse aiutarmi...ci sto sbattendo la testa già da un bel po'...

Ultima modifica di Corgan_ : 30-04-2008 alle 18:32.
Corgan_ è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 17:47   #13
gabriWWW
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
salve a tutti ,

rimmetto in luce questo post, poiche ho un problema con il file ke consigliavate.

uso visual c++ express edition 2008

ho compilato il file seguendo le istruzioni risultato funziona il main si avvia e non mi da errori.

il problema che vorrei creare una libreria affinche la possa includere su un altro progetto.

ho seguito la guida ma vc mi dà errore : file non presente in directory...

qlc1 puo aiutarmi
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 20:43   #14
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
che operazioni devi implementare??
perchè se ti limiti a quelle piu elementari io ho scritto una piccola classe in c++ per gestirle.
la trovi qui: http://mamo139.altervista.org/index....classi&id=2000
se hai pretese in piu invece non so aiutarti, perchè non mi sono piu interessato all'argomento
__________________
http://mamo139.altervista.org
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 09:18   #15
gabriWWW
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
ok vanno bene....il problema che mi dà errore

c:matrici.cpp(31) : warning C4101: 'y': variabile locale senza riferimenti

1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(103) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(237): vedere la dichiarazione di 'fopen'

1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(157) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(237): vedere la dichiarazione di 'fopen'
1>c:\documents and settings\****\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(173) : warning C4101: 'y': variabile locale senza riferimenti

1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(369) : error C2668: 'pow': chiamata ambigua a funzione in overload

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(575): potrebbe essere 'long double pow(long double,int)'

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(527): o 'float pow(float,int)'

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(489): o 'double pow(double,int)'

1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int, long)'

1>c:\documents and settings\****\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(393) : error C2668: 'pow': chiamata ambigua a funzione in overload

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(575): potrebbe essere 'long double pow(long double,int)'

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(527): o 'float pow(float,int)'

1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(489): o 'double pow(double,int)'

1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int, long)'



1>EKFLocal - 2 errore/i, 4 avviso/i
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 09:24   #16
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
colpa mia, non ho aggiornato il sito, quella versione si compila solo con dev-c++...

ora l'ho aggiornata, ho messo quella che si compila anche con vc++

la trovi sempre allo stesso link, ho sostituito i sorgenti!!
__________________
http://mamo139.altervista.org
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 09:46   #17
gabriWWW
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
Quote:
Originariamente inviato da mamo139 Guarda i messaggi
che operazioni devi implementare??
perchè se ti limiti a quelle piu elementari io ho scritto una piccola classe in c++ per gestirle.
la trovi qui: http://mamo139.altervista.org/index....classi&id=2000
se hai pretese in piu invece non so aiutarti, perchè non mi sono piu interessato all'argomento
ok funziona!!!!!


grazie
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
Annunciata la tuta di volo di Vast che s...
Vast presenta il nuovo Large Docking Ada...
Una denuncia getta ombre sulle batterie ...
DJI Avata 2 Fly Smart Combo a 526€: il d...
Alla guida della nuova auto elettrica ci...
GeForce RTX 3060 12 GB a giugno di nuovo...
Apple Music sarà sponsor ufficiale di Po...
The Mandalorian & Grogu: trailer fin...
Fedeltà record: Apple blinda gli utenti,...
Volkswagen ID.3 Neo: fino a 630 km di au...
GPU-Z mette i dati personali a rischio? ...
La PS6 potrebbe essere retrocompatibile ...
Amazfit Cheetah 2 Pro arriva in Italia: ...
Duolingo ammette l'errore dopo un anno: ...
Samsung Galaxy Tab S10 Lite a 249€: il t...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v