2012-03-26 3 views
1

Я новичок в matlab и пишу код функции с целью помочь построить график полусинхронной функции синуса. Но это не дает мне результата, которого я ожидаю.Ошибка в функции matlab, которую я не смог идентифицировать

function x = rectifiedSineWave(t) 
if sin(t) < 0 
    x = 0; 
else 
    x = sin(t); 
end 
+1

Это 't' вектор? –

ответ

4

t Если есть только один элемент, исходный код выглядит нормально.

Если t вектор, вы, вероятно, хотите

function x = rectifiedSineWave(t) 
    x = sin(t); 
    x(x<0)=0; 

или, еще проще (благодаря Serg)

function x = rectifiedSineWave(t) 
    x = max(0, sin(t)); 

Таким образом элементы, где sin(t) отрицательна установлены равными нулю.

Ваша проблема в том, что if sin(t)<0 триггеры как только любой элемент вектора t отрицательна, и установит x к нулю.

+0

Спасибо, это решает мою проблему. – Shnkc

+4

x = max (0, sin (t)); – Serg

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