![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/176218/image.png)
how we can define piecewise function in matlab?
조회 수: 68 (최근 30일)
이전 댓글 표시
in maple we can use comamnd:(
f:= piecewise(0 <= t and t <= T1, f1, T1 < t and t < T2, 0, T2 <=t and t <= T3, f1, T3 < t and t < T4, 0)
but in matlab i can not define this function.
please give me som information ...
thanks
댓글 수: 0
채택된 답변
Sally Al Khamees
2016년 12월 23일
편집: Sally Al Khamees
2017년 2월 21일
If you have R2016b and the Symbolic Math Toolbox installed, you can just use the piecewise function:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/176218/image.png)
댓글 수: 0
추가 답변 (3개)
Walter Roberson
2013년 10월 12일
You cannot define that as a function in MATLAB. MATLAB functions need to have a defined value for the case where none of the conditions hold. If you were absolutely sure that one of the conditions will hold you would rewrite the Maple function without the final condition, as
piecewise(0 <= t and t <= T1, f1, T1 < t and t < T2, 0, T2 <=t and t <= T3, f1, 0)
This would be
function y = f(t, T1, T2, T3, f1)
y = zeros(size(t));
idx1 = 0 <= t & t <= T1;
y(idx1) = f1;
idx2 = T1 < t & t < T2;
y(idx2) = 0;
idx3 = T2 <= t & t <= T3;
y(idx3) = f1;
y(~(idx1 | idx2 | idx3)) = 0;
end
댓글 수: 4
Walter Roberson
2017년 2월 21일
Note: my later experiments showed that using sym('t->...') cannot possibly create a symbolic function.
sixwwwwww
2013년 10월 12일
Dear ebi, You need something like this if I understood correctly:
syms f f1
t = input('Enter value of t: ');
% Assuming values of T1, T2 and T3 as follows
T1 = 10;
T2 = 20;
T3 = 30;
if ((t >= 0 && t <= T1) || (t >= T2 && t <= T3))
f = f1; % here you can define f1 as you wish
else
f = 0;
end
Is it ok?
댓글 수: 3
sixwwwwww
2013년 10월 12일
Do you input 't' as a time vector? and get f(t) for which you can calculate fft? Is it right?
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!