Мне интересно построить в Matlab следующую функцию, но без успешной работы.Построение функции в Matlab
не удается построить точки.
x = -1:0.1:3;
if (x<=1)
y = x*x-x+1
plot(x,y)
else
y = 2*x+3
plot(x,y)
end
Мне интересно построить в Matlab следующую функцию, но без успешной работы.Построение функции в Matlab
не удается построить точки.
x = -1:0.1:3;
if (x<=1)
y = x*x-x+1
plot(x,y)
else
y = 2*x+3
plot(x,y)
end
if
заявления вы определяете принимает условие для всего массива, что означает всех записи должны придерживаться инструкций. Поскольку только первые 21 придерживаются поставленного условия, оператор if
отправляется в else
и отображает прямую линию.
Ваше уравнение для первой строки неверно, так как x*x
приводит к ошибке, так как MATLAB предполагает, что это матричное умножение, а размеры неверны для этого. Причина, по которой вы не видите эту ошибку, связана с оператором if
, поскольку, как объяснялось выше, никогда не достигает этой строки. Вы должны изменить это уравнение, используя умножение точек, которое делает вещи по-разному, в отличие от массива/матрицы.
Уравнение для второй строки является правильным.
Если ваш оператор if/else
будет правильным, ваш первый сюжет будет перезаписан вторым, так как вы не указали переключатель hold on
на фигуры.
В качестве примечания я также использовал точку с запятой ;
после каждого утверждения, что не позволяет распечатать вывод строки на консоль.
x1 = [-1:0.01:1].';
x2 = [1:0.01:3].';
y1 = x1.^2-x1+1;
y2 = 2*x2+3;
figure;
hold on
plot(x1,y1)
plot(x2,y2)
'else' в исходном коде вызывает серьезное горе, я бы не сказал, что он правильный, за исключением' hold on'. –
И «вы переписали свой участок первой части со вторым битом», определенно не относится к коду в вопросе. –
@BenVoigt благодарит за это. Я ответил на оба вопроса в ответе. – Adriaan
Посмотрите [здесь] (http://math.stackexchange.com/questions/533221/piecewise-function-plot-in-matlab) некоторые советы. –
Что должно быть f (x = 1) равным? – brodoll
Вы используете оператор 'if' в сочетании с вектором. Чего вы ожидаете? – rayryeng