Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Matlab Problem :-(

[es] :: Matematika :: Matlab Problem :-(

[ Pregleda: 2422 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

exekutoradun
Grac

Član broj: 57067
Poruke: 2
*.vc-graz.ac.at.



Profil

icon Matlab Problem :-(18.03.2006. u 12:17 - pre 171 meseci
zdravo svima ima sledeci problem, poceo sam prije 3 dana da radim u matlabu i dobio sam sledeci zad. ali nit znam da radim nesto u matlabu ili razumjem dobro engleski. Pa htio sam vas zamoli ako mi neko od prilike moze rec sta ja u ovom zad. trebam da uradim.

Puno hvala unaprijed




Consider an LTI system specified by the following constant-coeffcient difference equation

y[n] = a0x[n] + a1x[n − 1] + . . . aM−1x[n −M + 1], (1)

where x[n] is the input, and y[n] is the output sequence, respectively. Let us further assume
that N samples of x[n] and y[n] are available, i.e, for n = 0..N − 1. We will also assume that
x[n] = 0 for n < 0 and n > N.

(a) It is possible to rewrite eq. 1 in the matrix/vector form as

y = Xa, (2)

where y = [y[0] y[1] . . . y[L−1]]T , L = N +M −1, and a = [a[0] a[1] . . . a[M −1]]T . Construct
the matrix X so as to ensure the equivalence to eq. 1. What are the dimensions of the resulting
matrix X?

(b) Write a Matlab function lti equ(x,a) that implements eq. 2 using the results obtained in
the task (a). The function lti equ(x,a) should have two input arguments: an N-dimensional
input sequence {x[n]}, and an M-dimensional vector of system coeffcients a. The function
should return the resulting output vector y.
Note that it is allowed to use only a single for-loop in your code to construct the matrix
X! The function must work with input sequences and system coeffcients of arbitrary length
(of course within the memory restriction of your computer).

(c) Check the correctness of your code by comparing the outputs of the lti equ(x,a) function
with the result of the Matlab function conv(x,a) that computes the convolution of the two
input arguments x and a. The outputs of both lti equ(x,a) and conv(x,a) should be
identical1 for the same input sequences and system coeffcients. Support your prove by the
corresponding plots.
1Note also, that the di erences of the order 10−14 between signals can be neglected since they are mostly
caused by Matlab rounding-offerrors.
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+4 Profil

icon Re: Matlab Problem :-(18.03.2006. u 23:45 - pre 170 meseci
a)
Cilj je napraviti matricu

Očigledno je da je matrica formata .

Zbog uslova o korišćenju najviše jedne for petlje, kôd bi mogao da izgleda nekako ovako:

Ne znam da li je moguće naterati Matlab da indeksiranje nizova ne kreće od 1 nego od 0. Zato su formule malo "translirane".

Code:

%pretpostavka je da sve neophodne promenljive već imaju dodeljene vrednosti

X=zeros(L,M);
m=length(x);

for i=1:L
     v=max(1+i-m,1):min(i,M);
     w=min(i,m):-1:max(i+1-M,1);
     X(i,v)=x(w);
end


Mislim da je sada ostatak zadatka jednostavan.
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

exekutoradun
Grac

Član broj: 57067
Poruke: 2
*.vc-graz.ac.at.



Profil

icon Re: Matlab Problem :-(19.03.2006. u 10:52 - pre 170 meseci
Hvala ti puno mislim da sam sad skontao pousacu tako nesto da uradim.
 
Odgovor na temu

Katja_Zap
Grad

Član broj: 37817
Poruke: 99
*.bb.online.no.



Profil

icon Re: Matlab Problem :-(27.03.2006. u 00:39 - pre 170 meseci

Da ne otvaram novi topik, prisljamcicu se na " exekutoradun-ov " topic, pa bih molio za odgovor na slijedece pitanje.

Ucim da napravim .m zapis, pa sam dosao do slijedeceg problema.

Izracunao sam velicinu npr. " L ", koju zelim da ispisem nakon prateceg teksta. Npr. u slijedecem formatu:

Velicina " L " je: xxx ( tu bi bio ispisan prethodno dobiveni rezultat xxx )

Koristio sam " eval ", ali ne mogu da dobijem ispis iza dvotacke, nego dobijem " L " u slijedecem redu, a rezultat u redu iza njega, a sve to praceno sa " ans = xxx " u slijedecim redovima.

I jos jedno pitanje: Kako se u ispisu preskace jedan red ?

Hvala unaprijed
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+4 Profil

icon Re: Matlab Problem :-(27.03.2006. u 12:19 - pre 170 meseci
Da bi sprečili pojavljivanje:
Code:

ans=

dovoljno je da iza odgovarajućih izraza napišemo znak ;

Ako je promenljiva L već dobila vrednost, onda bi sledeći deo koda mogao da reši problem prikazivanja rezultata:

Code:

disp([10,'L je: ',num2str(L),10]);


Ovde je broj 10 kôd za skok u novu liniju (namerno je napravljen preskok na početku i na kraju), a funkcija num2str, kao što joj ime sugeriše, pretvara numeričku vrednost u znakovnu (tj. u string).

[Ovu poruku je menjao uranium dana 27.03.2006. u 13:20 GMT+1]
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

Katja_Zap
Grad

Član broj: 37817
Poruke: 99
*.bb.online.no.



Profil

icon Re: Matlab Problem :-(27.03.2006. u 14:00 - pre 170 meseci

Odlicno " Uranium ", odlicno !! Stvar sljaka.
Jos samo da ponistim naknadno pojavljivanje " ans = .... " na samom kraju, poslije ispisa koji si mi pokazao. Znam da se simbol " ; " stavlja tokom rada u " MatLab-u " u direktnom racunanju, ali ovo sa programiranjem me zeza.
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+4 Profil

icon Re: Matlab Problem :-(27.03.2006. u 14:10 - pre 170 meseci
Možda bih mogao da pomognem ako mi pokažeš sadržaj tog .m fajla.
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

Katja_Zap
Grad

Član broj: 37817
Poruke: 99
*.bb.online.no.



Profil

icon Re: Matlab Problem :-(27.03.2006. u 14:15 - pre 170 meseci

Dakle, ne moze biti trivijalnije.

function L = ind ( Frez, c )
%Program za racunanje induktiviteta " L " iz izraza za f-ju

Frez = input ('Rezonantna frekvencija ( Frez ): ') ; % Unosi se ' Frez ' sa tastature
C = input ('Kapacitet ( C ): ') ; % Unosi se ' C ' sa tastature
om = 2*pi*Frez ; % Provjera
L = 1/(C*om*om) ; % om*om - ne nalazim na tast. poznati simbol za potenciranje
eval om ;
disp ([ 10, 'L je: ', num2str (L), 10 ]) ;
end
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+4 Profil

icon Re: Matlab Problem :-(27.03.2006. u 14:41 - pre 170 meseci
Najlakše ćeš to rešiti ovako:

Code:

Frez=input ('Rezonantna frekvencija ( Frez ): '); 
C=input ('Kapacitet ( C ): ') ;
om=2*pi*Frez;
L=1/(C*om^2); 
disp ([10,'L je: ',num2str(L),10]) ;


Dakle, izbačena je linija:

Code:

function L = ind(Frez,c)


tako da se više ne radi o funkcijskom, nego o komandnom fajlu. Takođe, nije baš uobičajeno (a ni dobro) definisati f-ju sa parametrima (koji se prosleđuju prilikom poziva f-je), a onda u samom telu f-je, ignorisati prosleđene parametre, pa ih nanovo unositi (obrati pažnju da malo c i veliko C nisu isto u Matlabu).
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

Katja_Zap
Grad

Član broj: 37817
Poruke: 99
*.bb.online.no.



Profil

icon Re: Matlab Problem :-(27.03.2006. u 16:42 - pre 170 meseci

Radi ! Bez greske.

Hvala na rjesenju i na napomeni o fumkcijskim i komandnim zapisima. Nisam znao. Moram negdje pogledati i obratiti paznju.


Pozdraf
 
Odgovor na temu

[es] :: Matematika :: Matlab Problem :-(

[ Pregleda: 2422 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.