如何在 Matlab/Simulink 中生成给定的正弦 ON/OFF 波形?
How do I generate the given sinusoidal ON/OFF waveform in Matlab/Simulink?
我想实现以下信号:
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 状态的两个峰值。请帮忙改正。
您似乎想要一个 重复 平方正弦波(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:
关于 From Workspace 块的一些要点:
- simin变量故意没有指定时间点
- 块的采样时间已从默认值更改
- 已取消选择插值数据
- 最终数据值设置为循环重复后的表单输出
我想实现以下信号:
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 状态的两个峰值。请帮忙改正。
您似乎想要一个 重复 平方正弦波(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:
关于 From Workspace 块的一些要点:
- simin变量故意没有指定时间点
- 块的采样时间已从默认值更改
- 已取消选择插值数据
- 最终数据值设置为循环重复后的表单输出