Om du bara ska göra heltalsberäkningar behöver du ju inte använda floats. En sak du behöver ta hänsyn till är att produkterna, resultatet av beräkningarna, inte blir för stora i mellanstegen eller det slutliga steget (overflow). Finns några andra saker att ta hänsyn till också, som en van programmerare gör automatiskt. Men du är ju inte det, är inte van, vilket gör mig orolig.DanielM skrev:Bara så ni vet det så funderar jag på att ta TomasL's råd att ändra om float till longEller uint32_t med andra ord.
Jag hoppas det ska gå bra att bara ersätta floats med heltalsberäkning? Inget annat jag behöver ta hänsyn till?
Jag tänker använda typedef.
För att kunna räkna med decimaltal kan man "flytta kommatecknet", d.v.s använda "fixed point", som Tomas varit inne på. Även många andra har föreslagit detta i alla andra trådar du startat. Hur som helst, fixed point kräver en del klurande och god förståelse för vad man gör (på bit-nivå). Din saknad av kunskap om detta gör mig orolig.
Till Matlab finns Dspace TargetLink, som automatiskt hanterar fixed point. D.v.s man kan betrakta signalerna som floats. Man kan mata systemet med massor av testfall, extremvärden på data, eller verkliga loggar. Man kan dessutom visuellt plotta signalerna både som float och fixed point i samma plot, för att avgöra hur "taggiga" de blir med fixed point, och ev. skala om dem för bättre upplösning (så länge det inte blir overflow någonstans). Finns massor med fina hjälpmedel för att se till att allt står rätt till när man går från float till fixed point. TargetLink är i princip standard inom bilindustrin i Tyskland.
Eftersom att du ska använda ovanligt stora matriser, och samtidigt koda för hand, d.v.s utan att gå via grafisk programmering som hjälpmedel, tror jag det blir mycket svårt för dig att verifiera att din fixed-point-lösning är buggfri vid alla kombinationer av indata. Så jag tycker att du ska fortsätta med floats. Annars gör du mig orolig.