Hur kan man göra matrisberäkningar med analog elektronik?
Hur kan man göra matrisberäkningar med analog elektronik?
Med operationsförstärkare så kan man göra matematiska beräkningar. Finns det något smidigt sätt att göra matrisberäkningar med analog elektronik? Istället för att ha en operationsförstärkare för varje skalär i matrisen, så borde man ha någon form av vektor som multipliceras med en matris. Det jag söker efter är någon form av analog elektronik som kan hantera multiplikation, subtraktion och addition för matriser och vektorer.
Med vänliga hälsningar
Volvo740
Med vänliga hälsningar
Volvo740
Re: Hur kan man göra matrisberäkningar med analog elektronik
Det går ju inte speciellt lätt att representera flera värden parallellt i en och samma analog signal. I så fall behöver man någon typ av multiplexing.
Om du har de analoga värdena kommande i tidsordning borde du kunna multiplicera ihop två sådana "vektorer" och integrera resultatet. Det blir motsvarigheten till Multiply-and-Accumulate i DSP sammanhang.
Om du har de analoga värdena kommande i tidsordning borde du kunna multiplicera ihop två sådana "vektorer" och integrera resultatet. Det blir motsvarigheten till Multiply-and-Accumulate i DSP sammanhang.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Hej!
Nej. Det ska inte vara "i samma signal". Det ska vara parallella signaler. Tänk dig exempelvis linjäralgebratiska ekvationen:
Där A är en matris och x och b är vektorer. Tänk dig att A ska föreställa någon analog apparat som har ingångarna x. Den analoga apparaten har utgångarna b.
I elektrisk form så skulle man kunna uttrycka detta som:
Där A är en krets med flera OP-förstärkare. Problemet är att om A-matrisen är rätt stor t.ex. 6x6 så blir det 36 stycken OP-förstärkare man måste ha. Och 6x6 är väldigt vanligt i mitt fall.
Har du andra förslag på metoder så säg bara till. Jag är även öppen för digital elektronik. Så länge jag slipper samplingstiden. Det måste alltså vara tidskontiuneligt elektronik. Analog är nog fel ord att säga.
Edit: Jag glömde säga att jag ska integrera signalen också.
Nej. Det ska inte vara "i samma signal". Det ska vara parallella signaler. Tänk dig exempelvis linjäralgebratiska ekvationen:
Kod: Markera allt
Ax = b
I elektrisk form så skulle man kunna uttrycka detta som:
Kod: Markera allt
xAb
Har du andra förslag på metoder så säg bara till. Jag är även öppen för digital elektronik. Så länge jag slipper samplingstiden. Det måste alltså vara tidskontiuneligt elektronik. Analog är nog fel ord att säga.
Edit: Jag glömde säga att jag ska integrera signalen också.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Sådana här maskiner kan göra avancerade beräkningar: http://www.analogmuseum.org/english/exa ... imulation/
DARPA tror på nyutveckling: https://www.fbo.gov/index?s=opportunity ... e&_cview=0
DARPA tror på nyutveckling: https://www.fbo.gov/index?s=opportunity ... e&_cview=0
Re: Hur kan man göra matrisberäkningar med analog elektronik
Men det är för mycket. Jag ska bara göra lite grundläggande matrisberäkningar. Inte simulera universum.
Det kanske inte går som jag har tänkt? Använda analog elektronik för att göra matrisberäkningar.
Det jag kräver är att det ska vara enkelt att integrera, addera, subtrahera och multiplicera. Då tänkte jag på OP-förstärkare. Men det krävs så många 36 stycken blir bara för en matris och jag har minst 10 matriser jag måste multiplicera med, och addera.
Det kanske inte går som jag har tänkt? Använda analog elektronik för att göra matrisberäkningar.
Det jag kräver är att det ska vara enkelt att integrera, addera, subtrahera och multiplicera. Då tänkte jag på OP-förstärkare. Men det krävs så många 36 stycken blir bara för en matris och jag har minst 10 matriser jag måste multiplicera med, och addera.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Mindre, klarar 2x2 matris: http://okikatechnologies.com/product/dynamx-fpaa/
Flera kan kopplas samman för större matriser.
Flera kan kopplas samman för större matriser.
Re: Hur kan man göra matrisberäkningar med analog elektronik
2x2 matris är inte godkänt. Minimum är 10x10.
Finns det inga digitala processorer som kan användas som en OP-förstärkare?
Jag måste ha en mycket snäv integration och helst så ska allt ske tidskontinuerligt.
Finns det inga digitala processorer som kan användas som en OP-förstärkare?
Jag måste ha en mycket snäv integration och helst så ska allt ske tidskontinuerligt.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Blir ändå lika många av dessa ändå.
Eller hur menar du att denna kan användas? Ström in på X1, X2, Y1, Y2 och Z så får jag W. Detta känns inte som rätt lösning. Men tack ändå för du upplyste mig om detta.
Eller hur menar du att denna kan användas? Ström in på X1, X2, Y1, Y2 och Z så får jag W. Detta känns inte som rätt lösning. Men tack ändå för du upplyste mig om detta.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Fundera på en ZISC35/78, kanske kan lösa dina problem. Dock har jag inte en susning var du hittar dem.Volvo740 skrev:2x2 matris är inte godkänt. Minimum är 10x10.
Finns det inga digitala processorer som kan användas som en OP-förstärkare?
Jag måste ha en mycket snäv integration och helst så ska allt ske tidskontinuerligt.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Det jag tänker göra är att reglera detta:
Där "dot x" är derivatan av x. Både x och u är vektorer och A, C och B är matriser. Insignalen är u och alla tillstånd är x.
För att reglera detta så hittar jag på en styrlag L, som också är en matris. Då kan jag uttrycka ett återkopplad PD-regulator med denna formel:
Där y är utsignalen på mitt system och vektorn r är min referensvektor(börvärde). Detta är en PD-regulator då A-matrisen är skriven från andra ordningens system till första ordningens system.
En tanke jag hade innan jag skapade denna fråga är hur skulle det vara om jag använde digital elektronik istället för analog elektronik?
Men då slog det mig att jag vet inte hur man integrerar bra med digital elektronik. Men även här verkar det som att det blir problem för mig att göra matrismultiplikationer och vektoraddition när det kommer till analog elektronik.
Kod: Markera allt
dot x = Ax + Bu
y = Cx
För att reglera detta så hittar jag på en styrlag L, som också är en matris. Då kan jag uttrycka ett återkopplad PD-regulator med denna formel:
Kod: Markera allt
u = -Ly + r
En tanke jag hade innan jag skapade denna fråga är hur skulle det vara om jag använde digital elektronik istället för analog elektronik?
Men då slog det mig att jag vet inte hur man integrerar bra med digital elektronik. Men även här verkar det som att det blir problem för mig att göra matrismultiplikationer och vektoraddition när det kommer till analog elektronik.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Varför inte ett samplat system? En integral blir då bara en summation mellan nya talet och föregående summa multiplicerat med samplingstiden.
Vilken bandbredd är det på de analoga signalerna?
När det gäller din tillståndsmodell
dot x = Ax + Bu
y = Cx
så finns det formella metoder att göra om till diskret tid så att den blir på formen:
x[n+1] = Ax[n] + Bu[n]
y[n] = Cx[n]
OBS Matriser inte samma som i tidskontinuerliga fallet.
Vilken bandbredd är det på de analoga signalerna?
När det gäller din tillståndsmodell
dot x = Ax + Bu
y = Cx
så finns det formella metoder att göra om till diskret tid så att den blir på formen:
x[n+1] = Ax[n] + Bu[n]
y[n] = Cx[n]
OBS Matriser inte samma som i tidskontinuerliga fallet.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Fast du behöver inte exakt integrera numeriskt.
Det kan exempelvis se ut så här när man kör MATLAB.
Att göra ett reglersystem på denna form:
Kräver att du måste bestämma hur ofta systemet samplar och sedan heter det inte som ovan, utan så här:
Där F = e^(A*h) och h är t.ex. 0.01 sekunder.
G = integral(e^(A*t), 0, h, t) där h = 0.01 sekunder.
Att lösa ut e^(A*h) kan vara riktigt svårt när det kommer över 6x6 matriser. Detta kallas övergångsmatris, och det är inte det lättaste för MATLAB att räkna ut, trots att MATLAB har funktionen >> expm(A*t) inbyggt.
Nu håller jag inte på med programmering av mikroprocessorer. Jag håller på med reglerteknik och nu känner jag mig helt tvungen att börja tillämpa reglertekniken i verkligheten, istället för att endast simulera som jag har gjort.
Så frågan är: Ska man köra fast samplingsintervall, eller dynamisk samplingsintervall. MATLAB koden ovan simulerar med ett dynamiskt samplingsintervall. För den tidsdiskreta modellen så behöver man endast veta denna del:
För att:
Skulle man deklarera att x[0] = 0 så kan man anta att x[n+1] = y.
Det kan exempelvis se ut så här när man kör MATLAB.
Kod: Markera allt
n = 1000; % Loops
x = [0; 0];
for i = 1:n
tic;
dx = A*x + B*u;
u = -L*x + r
dt = toc;
x = x + dx*dt;
t = t + dt;
endfor
Kod: Markera allt
x[n+1] = Ax[n] + Bu[n]
y[n] = Cx[n]
Kod: Markera allt
x[n+1] = Fx[n] + Gu[n]
y[n] = Cx[n]
G = integral(e^(A*t), 0, h, t) där h = 0.01 sekunder.
Att lösa ut e^(A*h) kan vara riktigt svårt när det kommer över 6x6 matriser. Detta kallas övergångsmatris, och det är inte det lättaste för MATLAB att räkna ut, trots att MATLAB har funktionen >> expm(A*t) inbyggt.
Nu håller jag inte på med programmering av mikroprocessorer. Jag håller på med reglerteknik och nu känner jag mig helt tvungen att börja tillämpa reglertekniken i verkligheten, istället för att endast simulera som jag har gjort.
Så frågan är: Ska man köra fast samplingsintervall, eller dynamisk samplingsintervall. MATLAB koden ovan simulerar med ett dynamiskt samplingsintervall. För den tidsdiskreta modellen så behöver man endast veta denna del:
Kod: Markera allt
x[n+1] = Fx[n] + Gu[n]
Kod: Markera allt
x[0+1] = Fx[0] + Gu[0]
x[1+1] = Fx[1] + Gu[0]
x[2+1] = Fx[2] + Gu[0]
x[3+1] = Fx[3] + Gu[0]
x[4+1] = Fx[4] + Gu[0]
x[n+1] = Fx[n] + Gu[0]
Re: Hur kan man göra matrisberäkningar med analog elektronik
Det finns massor av "smidiga" sätt att realisera matrisekvationer av
den typ du vill ha med elektronik. Typiskt är det så man bygger en
hel del elektronik - man utgår från ekvationer och så realiserar man
dem. Men hur man exakt realiserar beror på vilket problem man vill
lösa, samt vilka krav man har på tex hastighet, noggranhet,
stabilitet, kalibrerbarhet, energiförbrukning, observerbarhet, pris
med mera.
Så utan mera information är det svårt att svara på din fråga. Du får
beskriva mera i detalj vad du vill göra. Jag tolkar dina inlägg som
att du gärna vill ha fullständigt generell matrismultiplikation och
addition på kanske 10 matriser som vardera är 10x10 element. Det
låter kompicerat, minst sagt, men också väldigt intressant! Vad har
du till exempel för krav på bandbredd och grupplöptid? Hur stora
amplituder kommer dina variabler att anta, så att du kan garantera att
det inte klipper? Signal/brusförhållanden?
Det låter annars som ett digitalt signalbehandlingsproblem, där man
förslagsvis samplar ekvidistant för att kunna falla tillbaka på den
teori som finns där. Men, som sagt, det beror på vad du vill göra.
den typ du vill ha med elektronik. Typiskt är det så man bygger en
hel del elektronik - man utgår från ekvationer och så realiserar man
dem. Men hur man exakt realiserar beror på vilket problem man vill
lösa, samt vilka krav man har på tex hastighet, noggranhet,
stabilitet, kalibrerbarhet, energiförbrukning, observerbarhet, pris
med mera.
Så utan mera information är det svårt att svara på din fråga. Du får
beskriva mera i detalj vad du vill göra. Jag tolkar dina inlägg som
att du gärna vill ha fullständigt generell matrismultiplikation och
addition på kanske 10 matriser som vardera är 10x10 element. Det
låter kompicerat, minst sagt, men också väldigt intressant! Vad har
du till exempel för krav på bandbredd och grupplöptid? Hur stora
amplituder kommer dina variabler att anta, så att du kan garantera att
det inte klipper? Signal/brusförhållanden?
Det låter annars som ett digitalt signalbehandlingsproblem, där man
förslagsvis samplar ekvidistant för att kunna falla tillbaka på den
teori som finns där. Men, som sagt, det beror på vad du vill göra.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Idén att göra matrisberäkning med analoga komponenter känns udda och förtjänar en kommentar.
Det är klar att det går. Ev matrismultiplikation är en summa av produkter.
Summerar gör man med OP-förstärkare, och för multiplikation finns analoga kretsar.
Men analoga multiplikatorer är dåliga och dyra. Där finns brus och begränsad bandbredd.
För stora matriser blir det absurt många som behövs, såvida matrisen inte är väldigt gles.
Det finns mängder av digitala chips som är lämpliga, t.ex. signalprocessorer.
Att programmera dem är inte så svårt men kräver givetvis lärotid.
Analoga lösningar för detta tror jag ändå tillhör historien.
Men man kan inte utesluta att de har sin tillämpning någonstans.
Skulle vara intressant att veta exempel där analogtekniken vinner.
Samplingstiden slipper man inte. I analoga kretsar har man fördröjning och begränsad bandbredd.
Och att integrera (förmodar här att du menar beräkna en tidsintegral) är väl det lättaste som finns i en digital processor.
Det är klar att det går. Ev matrismultiplikation är en summa av produkter.
Summerar gör man med OP-förstärkare, och för multiplikation finns analoga kretsar.
Men analoga multiplikatorer är dåliga och dyra. Där finns brus och begränsad bandbredd.
För stora matriser blir det absurt många som behövs, såvida matrisen inte är väldigt gles.
Det finns mängder av digitala chips som är lämpliga, t.ex. signalprocessorer.
Att programmera dem är inte så svårt men kräver givetvis lärotid.
Analoga lösningar för detta tror jag ändå tillhör historien.
Men man kan inte utesluta att de har sin tillämpning någonstans.
Skulle vara intressant att veta exempel där analogtekniken vinner.
Samplingstiden slipper man inte. I analoga kretsar har man fördröjning och begränsad bandbredd.
Och att integrera (förmodar här att du menar beräkna en tidsintegral) är väl det lättaste som finns i en digital processor.