Matrisberäkningar med för STM32?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Matrisberäkningar med för STM32?

Inlägg av Mr Andersson »

Från tidigare inlägg tror jag han menar saker som min_funktion(malloc(n))
Sparar du inte pekaren från malloc läcker du minne. Ingenting görs automatiskt.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Okej. Tackar. Då vet jag.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Nu är jag klar med mitt matrisbibliotek. :) Den innehåller väldigt mycket som MATLAB kan. Grundläggande t.ex. QR-fakorisering, LU-faktorisering, pinv osv.
Användarvisningsbild
AndLi
Inlägg: 17048
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av AndLi »

Men vi får inte se antar jag?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Jo. Jag ska bara göra en exempellista på kommandon och praktiska exempel så man vet hur man ska använda denna :) Kommer snart!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Nu är den klar. Här är exempelkoden. Om ni hittar bättre lösningar eller liknande så säg bara till.

Något mystiskt som jag inte har lyckats lösa är denna.

Kod: Markera allt

passing argument 1 of ‘create’ from incompatible pointer type [-Wincompatible-pointer-types]
Denna får jag vid denna kod.

Kod: Markera allt

/*
	 * Create a matrix
	 */
	float values1[5][5] = { { 1, 76, 86, 1, 5 },
							{ 1, 5, -6, 0, 3 },
							{ -5, 7, 3, 87, 3 },
							{ -8, 3, 1, 4, -1 },
							{ 7, 9, 1, 28, 4 } };

	matrix* A = create(&values1, 5, 5); // <--passing argument 1 of ‘create’ from incompatible pointer type [-Wincompatible-pointer-types]
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: Matrisberäkningar med för STM32?

Inlägg av Shimonu »

Du ger en pekare till create some inte stämmer med typen du satt i deklarationen till create.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Funktionen create har denna dekleration

Kod: Markera allt

matrix* create(float* arr2D, int n, int m);
Denna funktion får noteringen
expected ‘float *’ but argument is of type ‘float (*)[5][5]’
Nu löste jag problemet! :)

Jag uppdaterar projektet.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Matrisberäkningar med för STM32?

Inlägg av Rick81 »

Koden ser ju lovande ut (bara kollat den, inte testat). Bra jobbat!

Har du verifierat att den ger samma resultat som ditt matlab exempel du visade?

Hur lång tid tar det lösa 36x36 matriser med sv på stm32f4?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Tackar!

Jag har verifierat med GNU Octave, vilket använder samma MATLAB kod. Det stämmer.

Det har jag inte testat än. Jag vet inte riktigt hur jag ska kunna testa det. Det viktigaste för mig är att få konstant samplingsintervall. Hade jag kört detta på ett operativsystem så skulle jag få olika samplingsintervall. Men kör jag direkt C på en mikroprocessor (jag vet, man kör inte C direkt på en uC, men ni förstår vad jag menar) så kommer man få konstant samplingsitervall om temperaturen är konstant.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Matrisberäkningar med för STM32?

Inlägg av Klas-Kenny »

Jag vet inte riktigt hur jag ska kunna testa det.
Ett enkelt sätt brukar vara att typ sätta en utgång hög innan du kör beräkningarna, sen sätta den låg direkt efter.

Sen är det bara att hänga på oscilloskopet.
Tiden det tar att sätta utgången hög/låg är i de flesta fall försumbar om man inte testar funktioner som går på väldigt få instruktioner.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Matrisberäkningar med för STM32?

Inlägg av Rick81 »

Du kan också sätta upp en timer eller systick med 1 ms upplösning och mäta ticks före och efter operationen
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1339
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Matrisberäkningar med för STM32?

Inlägg av baron3d »

Eller läsa "performance counter" före och efter och sedan beräkna skillnaden.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Tackar.

Jag ska testa det. Kan inte ni testa det också? Lagar mat.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Matrisberäkningar med för STM32?

Inlägg av Rick81 »

För att få konstants samplingsintervall rekommenderar jag köra ADC mot buffer via DMA och använda timer för trigga varje ADC. efter X ADC sätter du upp interupt där du växlar DMA buffer. På så sätt kan du köra samplingen parallellt med matris operationer och kan använda i princip all cpukraft till beräkningar.

Vi vet ju inte vilka 36x36 operationer du vill göra.....
Skriv svar