2016-04-19 2 views
1

Я использую следующие коды в Scilab для генерации широтно-импульсной модуляции с использованием метода векторизации. Но я получаю нежелательный график при изменении количества циклов, TimePeriod, процентов. Может ли кто-нибудь помочь мне в этом?Создание ШИМ с использованием Scilab

percent=input("Enter the percentage:"); 
TimePeriod=input("Enter the time period:"); 
Cycles=input("Enter the number of cycles:"); 

x=0:Cycles*TimePeriod; 
t=(percent/100)*TimePeriod; 

for n=0:0.01:Cycles 
    y(((n*TimePeriod)< x) & (x<(n*TimePeriod+t))) = 1; 
    y(((n*TimePeriod+t)< x)& (x<((n+1)*TimePeriod))) = 0; 
    plot(y,'b','LineWidth',2) 
end 

ответ

1

Я изменил ваш код, и теперь он работает. Ваш код был очень медленным из-за цикла for со многими вызовами. (Scilab и Matlab оптимизированы для выполнения матричных операций, поэтому они ослабевают в цикле. Я сократил количество вызовов до количества циклов.

percent=input("Enter the percentage:"); 
TimePeriod=input("Enter the time period:"); 
Cycles=input("Enter the number of cycles:"); 
ts = 0.01; // sample time 

x=ts:ts:Cycles*TimePeriod; 
on = ones(1, percent/100*TimePeriod/ts); 
off = zeros(1, (1 - percent/100)*TimePeriod/ts); 
signal = []; 
for cycle = 1:Cycles 
signal = [signal, on, off]; 
end 

figure(1) 
plot2d(x, signal); 

 Смежные вопросы

  • Нет связанных вопросов^_^