2016-08-30 3 views
-1

Я хочу реализовать следующий сигнал:Как создать заданную синусоидальную форму включения/выключения в Matlab/Simulink?

Required input

I (т) = 500 * (sin (pi.t/0,3))^2, т принадлежит {0, Ts}

= 0, т принадлежит {Ц., Т}

Здесь T = 0,8 и Ц. = 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

+0

Я не проверил ваш код в деталях, но почему вы ожидаете, что он не будет иметь 2 пика во время включения? Период вашего импульса равен 0,8, 0,3 ВКЛ, затем 0,5 ВЫКЛ. Период волны sin^2 равен 0,3. 0,3 не переходит в 0,8, поэтому ваши синусоидальные волны и импульсы не останутся «выстроенными». – kabdulla

ответ

0

Похоже, вы желая повторяющуюся образец прямоугольной волны синуса (для 0.3s), а затем ноль (для 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]; 

Если вы хотите, чтобы проверить сгенерированный сигнал в MATLAB, то сделайте следующее:

>> plot(tOnePeriod,yOnePeriod) 

Импорт сигнала в Simulink следующим образом :

enter image description here

Некоторые importan т точек о Из рабочего пространства блока:

  1. Переменная Симин преднамеренно не имеет временных точек указано
  2. Время выборки для блока был изменен с его по умолчанию
  3. Интерполяция данных был отменить выбор
  4. Выход формы после конечного значения данных был установлен в Циклическое повторение.