如何在Matlab中制作一个周期性的分段定义函数?

时间:2018-12-02 12:48:15

标签: matlab

我正在尝试在matlab上实现自己的功能,其分析定义为:

x(t)=
{ A, k*T =< t <=k*T+tau 
{ 0, k*T+tau < t < k*T+T

我正在尝试使用:

A=1
T=2
tau=1
k=0:1:10
t=0:0.1:100
y=A.*(t>=k*T).*(t<=k*T+tau) + (0).*(t>k*T+tau).*(t<k*T+T)

在那之后,我收到一条消息:

error: mx_el_ge: nonconformant arguments (op1 is 1x1001, op2 is 1x11)

函数应看起来像振幅= A的方波(例如A = 1)。

这怎么办?

1 个答案:

答案 0 :(得分:2)

您可以只定义一个周期(k = 1),然后使用repmat重复k次。现在它不起作用,因为您在逻辑上比较t(长度1001)和k*T(长度10)。

或者,转置k,然后对各行求和:

A=1;
T=2;
tau=1;
k=(0:1:10)';
t=0:0.1:100;

y=sum(A.*(t>=k*T).*(t<=k*T+tau) + (0).*(t>k*T+tau).*(t<k*T+T),1);

plot(t,y)

注意:这仅在您的特定示例中有效,因为当“超出范围”时该函数为零。

enter image description here