如何在Matlab / Simulink中生成给定的正弦ON / OFF波形?

时间:2016-08-30 01:45:33

标签: matlab matlab-figure simulink sine

我想实现以下信号:

Required input

I(t)= 500 *(sin(pi.t / 0.3))^ 2,t属于{0,Ts}

= 0,t属于{Ts,T}

这里,T = 0.8并且Ts = 0.3

我试过的代码:

t = 0.01 * [0:3000]';         
d = 0.8 * [0:35]';           
y = pulstran(t,d,'rectpuls',0.3);
ut = 500.*((sin(pi*(t-floor(t/0.8)*0.8)/0.3)).^2).*y;
plot(t,ut)

生成的波形有几个错误,包括每个ON状态的两个峰值。请帮忙纠正。

enter image description here

1 个答案:

答案 0 :(得分:0)

看起来你想要一个平方正弦波的 重复 模式(0.3秒),然后是零(0.5s)。

可以通过以下方式实现:

>> Io = 500;
>> Ts = 0.3;
>> T = 0.8;
>> SampleRate = 0.01;
>> tOnePeriod = 0:SampleRate:(T-SampleRate);
>> yOnePeriod = zeros(1,numel(tOnePeriod));
>> yOnePeriod(tOnePeriod<=Ts) = Io*(sin(pi*tOnePeriod(tOnePeriod<=Ts)/Ts).^2);
>> simin.time=[];
>> simin.signals.values=yOnePeriod(:);
>> simin.signals.dimenions = [1 1];

如果要在MATLAB中检查生成的信号,请执行以下操作:

>> plot(tOnePeriod,yOnePeriod)

以下列方式将信号导入Simulink:

enter image description here

关于 From Workspace 块的一些要点:

  1. simin变量故意没有指定时间点
  2. 块的采样时间已从默认值
  3. 更改
  4. 插入数据已取消选择
  5. 在最终数据值设置为循环重复后的表单输出。