2015-01-06 2 views
1

У меня есть синусоидальная волна и на том же участке, волна постоянного тока, которая является пороговым напряжением для компаратора Op-Amp без обратной связи.Создайте прямоугольную волну в MATLAB

Кода я написал до сих пор:

t1 = 0:t/1000:N*t; 
y1 = Vin*sin(2*(1/t)*3.14*t1); 
subplot('position',[0.056 0.1 0.27 0.25]); 
plot(t1,y1,t1,Vth, 'r'); 
grid on; 
title('Input Signal'); 
xlabel('Time[s]'); 
ylabel('Vi'); 

Моей проблема заключается в том, что мне нужно сделать еще один сюжет, в котором у меня есть прямоугольная волна, которая изменяется от Vin до -Vin когда порог достигается за счет синусоидальная волна.

Это то, что я пытаюсь сделать:

Я пробовал все, что я знаю в MATLAB, чтобы сделать этот участок, но я до сих пор не удалось создать. Кто-нибудь знает как?

ответ

2

Другой метод должен был бы использовать Signum function через sign в сочетании с синусоидальная функция.

Signum function используется довольно сильно в обработке сигналов, особенно в системах связи с Hilbert Transform. Функция signum является индикатором знака. Если вход в функцию положительный, выход равен 1, если вход отрицательный, выход равен -1, а если вход равен 0, выход равен 0. Это очень хорошо имитирует операционный усилитель без обратной связи. Однако вы хотите, чтобы это изменило знак, когда достигнут порог. Поэтому вы должны применить sign к сигналу, вычитаемому с этим порогом. Учитывая, что ваш вход/выход масштабируется Vin, вам нужно будет масштабировать вывод sign по Vin, а также выходы находятся в диапазоне -/+ 1.

Вот пример того, что я говорю о:

Vth = 1; %// Threshold 
Vin = 5; %// Amplitude of input/output 
fs = 10; % // Hz 
t = 0 : 0.001 : 0.5; 
y = Vin*sin(2*pi*fs*t); 
yout = Vin*sign(y - Vth); 
plot(t, y, t, yout, [0 0.5], [Vth Vth]); 

Приведенные выше код объявляет порог 1, амплитуду входа которого 5, с последующим указанием синусоидальной частоты, и время вектор от 0 до 0,5 секунд с шагом 0,001. Затем мы генерируем синусоидальный сигнал, затем генерируем насыщенную волну с использованием порогового значения.Нанесем синусоидальный сигнал, насыщенный сигнал, а также пороговую отметку, так что вы можете увидеть, что работает

Это то, что я получаю:

enter image description here

Как вы можете видеть, насыщенная волна изменяет полярность когда волна превосходит порог.

1

Вы можете сделать следующее

y2 = Vin*(y1 >= thresh) + -Vin*(y1 < thresh) 

Когда вы y1 >= thresh, вы будете иметь 1, где y1> молотить, 0 в противном случае (который затем умножить на Vin). Противоположное будет для -Vin

Это то, что выглядит вывод (хотя и я сделал это в python, но синтаксис тот же), когда наложен. Порог был установлен на 2 здесь

enter image description here

0

Вы можете сделать:

y2=y1; 
y2(y2>=Vth)=Vin 
y2(y2<Vth)=-Vin 

Для построения как:

subplot(2, 1, 1), plot(t1, y1); 
subplot(2, 1, 2), plot(ti, y2); 
Смежные вопросы