Hleda se algoritmus
Marek Peca
marek@tynska.cuni.cz
Pondělí Leden 17 19:49:37 CET 2005
Mily pane profesore,
mozna uz to mate vyreseno, vzpomnel jsem si na Vas az dneska rano.
Myslim, ze by to melo jit resit tou krasnou a casove nijak nenarocnou
metodou, kterou se "rucne" prepisuji stavova schemata systemu do
matic. A ziskat z tech matic diferenc(ial)ni rovnice nebo prenos uz
je brnkacka pro pocitac i cloveka.
Takze algoritmus... pracujete s DSP, takze predpokladam diskretni
verzi. Schema se sklada z prvku
- nasobeni konstantou
- scitacek
- zpozdovacu 1/z (predpovidace (z) radsi nevedu, jinak se do toho
zamotam
:-))
Mate nejak definovane body, ktere tvori vstup (zrejme i vystup, ale
to neni pro tento ucel povinne).
* vstupy systemu bereme jako vektor buzeni (u)
* vystup _kazde_ zpozdovacky budeme chapat jako jednu stavovou
promennou (zpozdovacka je vlastne pamet na 1 cislo) -- ve spojite
verzi by to byl integrator; vektor stavovych velicin si oznacime x
* od vstupu kazde zpozdovacky jdeme tak dlouho, dokud nenajdeme a
nezaznamename si vsechny "konce" -- tj. bud vystupy jinych
zpozdovacek (x[k]) nebo vstupy systemu (u[k]); vysledek si zapiseme
pro vstup v pomoci vektoru m a c jako vstup[v] = m.x + c.u;
vektor m pak nacpeme do matice M na radek v, vektor c do matice C na
radek v
* po projiti vsech zpozdovacek mame ctvercovou matici M (velikost je
rovna poctu zpozdovacek, tj. radu systemu) a matici C, vysokou jako M
a sirokou jako vektor u; tim mame popsano chovani vnitrnich stavu
systemu:
x(t+1) = Mx(t) + Cu
-- mame-li definovany nejake vystupy (vektor y), vysledujeme
obdobnym zpusobem dalsi dve matice, D a E, pro vztah
y = Dx + Eu
* timto mame vlatsne uz napsanou diferencni rovnici (to jste chtel,
myslim); pokud chcete prenos (=> frekvencni charakteristiku), da se
do toho cosi dosadit, ale abych to nezvrzal, radsi se podivam do
skript.
Zatim se mejte hezky a at Vam to funguje.
Zdravi Marek P.
P.s> Projistotu rozepisu druhou hvezdicku:
pro k pres vsechny stavy:
- volat funkci prolejzacka(vstup zpozdovacky[k])
- tahle funkce vrati vektor m (velikost=pocet stavu), ten se soupne
na radek k do matice M, dale vektor c (velikost=pocet vstupu
systemu), ten se soupne na radek k do matice C
funkce prolejzacka(misto v obrazku), vraci m, c
misto v obrazku je
- vstupem systemu cislo n
-- vrat m[*]=0, c[n]=1, c[ostatni]=0
- vystupem zpozdovacky cislo n
-- vrat m[n]=1, m[ost]=0, c=0
- vystupem nasobicky konstantou g
-- vrat g*prolejzacka(vstup tehle nasobicky)
- vstupem scitacky
/* BUNO beru jen scitacky s dvema + vstupy */
-- vrat prolejzacka(prvni vstup) + prolejzacka(druhy vstup)
/* to je cely ;-) */
On Wed, 5 Jan 2005 Serych@panska.cz wrote:
> Dobry den,
> letos jsem si vzal dva maturanty na dlouhodobou praci, kteri maji vytvorit
> graficky editor pro kresleni DSP algoritmu. Na zaklade obrazku by pak mel
> vygenerovat rovnice onoho filtru tak, aby se tim mohly prohanet cisla treba z
> excela a tak demonstrovat DSP algoritmy. Ovsem asi jsem to trochu prepisk s
> predstavou o svych algoritmizacnich schopnostech a nevim si moc rady s
> algoritmem, ktery z obrazku sestavi rovnice. Mohl by me nekdo prosim
> nakopnout spravnym smerem, pod jakymi klicovymi slovy takove algoritmy
> hledat?
>
> Prikladam ukazku obrazku filtru, trojuhelnicek je nasobeni koeficientem,
> obdelnicek je zpozdeni o k kroku (v pripade toho obrazku rekneme ze k=1) a
> plusko je souctovy clen.
> X[n] a Y[n] jsou posloupnosti vzorku. V pripade tohoto obrazku by tedy melo z
> programu vypadnout:
>
> Y[0]=a * X[0]
> Y[n]=c * Y[n-1] + a * X[n] + b * X[n-1]
>
>
> Diky moc za pomoc
>
> Jakub Serych
Další informace o konferenci Hw-list