Вам придется простить мою ржавость с пакетом, но вам нужно немного изменить код. Примечательно, что запись 0<=x
неверна и должна быть x>=0
. Поскольку hui
работает с вектором, я считаю, что вы должны учитывать это при построении возвращаемого значения.
Я уверен, что есть более эффективные способы векторизации этого, но в основном, переступая через входной вектор, я добавил последнее значение к вектору возврата, и в конце отрубил начальный 0, который я вставил в Я вставил дозорное значение в случае, если входные данные не соответствовали одному из критериев (в вашем коде всегда использовался путь "else", поэтому размещение чего-то там могло предупредить вас о том, что что-то не так).
function [retval] = hui(x)
retval = 0
for i=1:size(x,2)
if(x(i)>=0 && x(i) <2)
retval = [retval (1.5 * x(i) + 2)];
elseif( x(i)>=2 && x(i) <4)
retval = [retval (-1*x(i) + 5)];
elseif(x(i)>=4 && x(i) < 6)
retval = [retval (0.5 * x(i))];
elseif(x(i)>=6 && x(i) < 8)
retval = [retval (x(i) - 3)];
elseif(x(i)>=8 && x(i) <=10)
retval = [retval (2 * x(i) - 11)];
else
retval = -999;
endif
endfor
retval = retval(2:size(retval,2));
endfunction