Gość: Marks IP: *.aster.pl / *.aster.pl 29.03.05, 13:27 czy ma ktos pojecie o pisaniu dosyc prostych programikow w matlabie. Najprostsze funkcje zlozone, bo ewentualnie bym prosil o pomoc w napisaniu (albo i napisanie) zadania Link Zgłoś Obserwuj wątek
Gość: Marks Re: Matlab IP: *.aster.pl / *.aster.pl 29.03.05, 16:37 Narysuj funkcje: y(x)= 20 dla 1<x<=10 2*x dla 10<x<=20 40 dla 20<x<=50 niestety nie potrafie tego zrobic. nie jest to pewnie skomplikowane, ale... Link Zgłoś
freebaby Re: Matlab 29.03.05, 18:09 a=0; while a==0, x=input('Podaj wartosc argumentu funkcji x='); a=1; if ((x<=1|x>51)|(x>20&x<=40)) a=0; disp('Podaj wartosc argumentu jeszcze raz - wartosc spoza zakresu'); end; end; if (x>1 & x<=10) stem(20,x); end; if (x>10 & x<=20) stem(2*x,x); end; if (x>40 & x<=50) stem(40,x); end; end Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 18:49 A czy bylo by mozliwe wytlumaczenie tego programu? tak w skrocie. Bylbym wdzieczny. pozdrawiam Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 18:55 Ewentualnie metoda bardziej lopatologiczna, jesli istnieje :) Link Zgłoś
freebaby Re: Matlab 29.03.05, 19:02 a=0; % inicjujemy zmienna pomocnicza a, ktora uzyta bedzie w petli while. Ustawienie jej na "0" sprawia,ze warunek jest spelniony,a petla wykonywana dopoki wartosc wynosi "0". while a==0, %poczatek petli,ktorej sprawdzenie wyrazenia logicznego nastepuje na koncu petli x=input('Podaj wartosc argumentu funkcji x='); %pobieramy wartosc argumentu x a=1; %a=1, powoduje wyjscie z petli if ((x<=1|x>51)|(x>20&x<=40)) %petla wylapujaca nieprawidlowe wartosci a=0; %wykryto nieprawidlowe wartosci - petla wykonac sie musi jeszcze raz disp('Podaj wartosc argumentu jeszcze raz - wartosc spoza zakresu'); %wyswietla komunikat end; %koniec petli if end; %koniec petli while if (x>1 & x<=10) stem(20,x); end; %kreslenie wartosci dyskretnej dla warunku 1<x<=10 if (x>10 & x<=20) stem(2*x,x); end; %kreslenie wartosci dyskretnej dla warunku 10<x<=20 if (x>40 & x<=50) stem(40,x); end; %kreslenie wartosci dyskretnej dla warunku 40<x<=50 end %koniec programu (np. m-file'a) Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 19:10 a czy ewentualnie istnieją inne sposoby bez uzycia petli while ??? Link Zgłoś
freebaby Re: Matlab 29.03.05, 19:29 ta petla while byla do wyeliminowania zlych wartosci. mozna petla if to samo zrobic. Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 19:51 A mozna prosic o rozwiazanie z uzyciem jedynie petli if, byloby mi prosciej :) Przepraszam ze zawracam glowe :) Link Zgłoś
freebaby Re: Matlab 29.03.05, 20:07 if (x>1 & x<=10) stem(20,x) elseif (x>10 & x<=20) stem(2*x,x) elseif (x>40 & x<=50) stem(40,x); else disp('Liczba spoza zakresu'); end; mozna i tak Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 20:41 Jakie jest dzialanie funkcji 'stem' tzn wiem ze ona mi to rysuje, ale czy to cos bardziej skomplkowanego czy jedna z podstawowych? Link Zgłoś
freebaby Re: Matlab 29.03.05, 20:47 podstawowa, do kreslenia wartosci dyskretnych - inne to np. plot,loglog,bar,stairs,semilogx itd.. wiecej info znajdziesz na w helpie, gdzie wpisujac help w oknie polecen uzyskasz uszeregowana liste wszystkich polecen matlab'a. Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 21:30 "if (x>1 & x<=10) stem(20,x) elseif (x>10 & x<=20) stem(2*x,x) elseif (x>40 & x<=50) stem(40,x); else disp('Liczba spoza zakresu'); end; " to jeszcze na poczatku winno miec "x=input('podaj wartosc')" np. tak? a za pomoca "plot" jest mozliwosc zrobienia? bo jak ja probowalem zrobic cos z "plot" to wyskakiwaly tylko punkty, a nie linia ciagla, co mniemam zapewnia wlasnie funkcja "stem" Link Zgłoś
freebaby Re: Matlab 29.03.05, 21:38 dokladnie. a plot rysuje wykres, bedzie on polaczony liniami jezeli x,y beda wektorami (o tych samych rozmiarach) zawierajacymi wspolrzedne. Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 21:58 A bylaby mozliwosc napisania programu z uzyciem "plot" :) Link Zgłoś
freebaby Re: Matlab 29.03.05, 22:24 jak mialby przebieg tej funkcji wygladac? wg wytycznych sa to wartosci dyskretne, wiec moze zaprezentowac to jak poziom wysoki dla danego zakresu np. 1<x<10 jako poziom (taki prostokat) 20 ?? Link Zgłoś
Gość: Marks Re: Matlab IP: 217.153.87.* 29.03.05, 22:36 mi sie wydaje ze ma byc tak, iz jesli podam 1. x od 1 do 10 to rysuje wykres y=20 w przedziale 1-10, jak podam 2. x od 10 do 20 to rysuje wykres y=2x (dla tego podanego x) w przedziale 10-20 3. x od 20 do 50 --> patrz pkt. 1 4. x spoza zakresu, nie rysuje nic Link Zgłoś
freebaby Re: Matlab 29.03.05, 22:55 najprosciej bedzie z bar (wykres slupkowy): x=input('Podaj wartosc argumentu funkcji x='); if (x>1 & x<=10) bar([1 10],[20 20]) elseif (x>10 & x<=20) bar([10 20],[2*x 2*x]); elseif (x>20 & x<=50) bar([20 40],[40 40]); else disp('Wartosc spoza zakresu'); end; z plot bedzie tak: if (x>1 & x<=10) plot([1 10],[20 20]) elseif (x>10 & x<=20) plot([10 20],[2*x 2*x]); elseif (x>20 & x<=50) plot([20 40],[40 40]); else disp('Wartosc spoza zakresu'); end; jezeli chcesz zbudowac prostokacic to musisz dodac odpowiednie elementy wektrora np dla przypadku 1<x<=10 : [1 1 10 10],[0 20 20 0] istniej rowniez sporo atrybutow do odpowiedniego ustawienia wykresu, takich jak osie kolory itp. - wymaga to chwili zabawy. Sorrki za wczesniejsze bledne programy,ale jakos zle odczytalem zakresy danych (3 zakres). Link Zgłoś
Gość: Marks Re: Matlab IP: *.aster.pl / *.aster.pl 29.03.05, 23:22 A jesli mialoby wygladac to tak ze chce ujrzec cala to funkcje y(x), od 1<x<50 wygladala by wtedy mniejwiecej tak: __ / __/ y(x)= 20 dla 1<x<=10 2*x dla 10<x<=20 40 dla 20<x<=50 czyli by przyjmowala dla x:1-10 y=20 x:10-20 y=20,22,24,26,28,...,38,40 (dla kazdego z x) x:20-50 y=40 bardzo podoba mi sie metoda z wektorami... please....... Link Zgłoś
Gość: Marks Re: Matlab IP: *.aster.pl / *.aster.pl 29.03.05, 23:24 __ / __/ tak znaczy sie, widomo o co chodzi :> Link Zgłoś
freebaby Re: Matlab 29.03.05, 23:41 czyli ten srodkowy zakres jako takie schodki ? a caly przebieg, co masz na mysli ? Link Zgłoś
Gość: Marks Re: Matlab IP: *.aster.pl / *.aster.pl 29.03.05, 23:42 mailem napisze, wrzuce jakiegos painta aby bylo widac o co chodzi Link Zgłoś