Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab/Simulink中生成给定的正弦开/关波形?_Matlab_Matlab Figure_Simulink_Trigonometry - Fatal编程技术网

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

如何在Matlab/Simulink中生成给定的正弦开/关波形?,matlab,matlab-figure,simulink,trigonometry,Matlab,Matlab Figure,Simulink,Trigonometry,我想实现以下信号: 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) 生成的波

我想实现以下信号:

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)
生成的波形有几个错误,包括每个接通状态的两个峰值。请帮忙改正


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

这可以通过以下方式实现:

>> 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];
>> plot(tOnePeriod,yOnePeriod)
按以下方式将信号导入Simulink:

关于“从工作区”块的一些要点:

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

  • 我还没有详细检查您的代码,但为什么您希望它在一个开启周期内不会有两个峰值?你的脉搏周期是0.8,0.3开,然后0.5关。sin^2波的周期为0.3。0.3不会变成0.8,所以你的正弦波和脉冲不会保持“对齐”。