Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 03. 11. 2015 18:36

NoR
Zelenáč
Příspěvky: 8
Reputace:   
 

Matlab - definování funkce v různých intervalech

Ahoj, chtěl bych vás tímto poprosit o asistenci při řešení mého problému, Google mě nechal na holičkách... Nedaří se mi nadefinovat zadaný signál, tak jak bych potřeboval.

Například mám signál definovaný v mathcadu takto //forum.matweb.cz/upload3/img/2015-11/71695_1.png

co bych potřeboval je nadefinovat tento signál v matlabu. Přes google jsem něco málo našel a vymyslel to takto:

syms t;

T_0 = 2; f_0 = 1 / T_0; omega_0 = 2 * pi * f_0;

y_1 = @(t) t
y_2 = @(t) -t+2
t_1 = 0:0.001:1;
t_2 = 1:0.001:2;

figure
plot(t_1,y_1(t_1),t_2,y_2(t_2))


Ono to sice vykreslí správný signál, ale já bych vzhledem k dalším úpravám potřeboval, nadefinovat to tak jako v mathcadu pomocí společné proměnné t. Napadlo mě, že by se možná dalo použít nějakou podmínku if/else, ale v matlabu dělám poprvé a syntaxi neovládám. Věděl by někdo jak na to?

Offline

  • (téma jako vyřešené označil(a) NoR)

#2 04. 11. 2015 09:25

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: Matlab - definování funkce v různých intervalech

↑ NoR:
Ahoj,
"napálit" vzorky do pole je také možnost, která nemusí být vždy úplně od věci. Za mých mladých let se na osmibitech předpočítané hodnoty používaly poměrně často, protože to mohlo výrazně urychlit výpočet.

Matlab samozřejmě umí funkce, takže si můžeš definovat:

Code:

function [y]=pila(t)
   if (t>=0)&(t<1)
       y=t;
   elseif  (t>=1)&(t<2)
       y=2-t;
   else
       y=0;
   end
end

Tohle si uložíš do souboru pila.m, který bude ve stejném adresáři, v jakém spouštíš Matlab (možná to Matlab umí nějak lépe, já používám Octave z Linuxové konzoly a jsem líný hloubat nad nastavením...). Pak si ve svém skriptu prostě budeš volat funkci pila obvyklým způsobem:
> y=pila(1.15)
> 0.85

Pokud plánuješ používat funkci jen v jednom skriptu, může být i v těle skriptu, ale to je méně pohodlné pro ladění.


Доктор сказал «в морг» — значит в морг!

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson