Как определить функцию peicewise в файле функции - Matlab - PullRequest
0 голосов
/ 09 апреля 2019

Я создал файл funnction и определил функцию peicewise внутри него, используя условные выражения и цикл for. Я попытался вызвать функцию в отдельном файле m.file, но переменные 't' и 'v' не отображаются в рабочей области, а просто выводят вектор со значениями t, называемыми ans.

Я попытался поместить точный код (без определения функции) в обычный файл m, и он работал нормально, показывая обе переменные t и v

    #function file
function [t, v] = VPieceWise(t_start, t_end);
t = t_start:0.01:t_end;
for i = 1:length(t);
    if (t(i) >= 0) && (t(i) <= 10);
        v(i) = 11.*(t(i).^2) - (5.*t(i));
    elseif (t(i) >= 10) && (t(i) <= 20);
        v(i) = 1100 - 5.*t(i);
    elseif (t(i) >= 20) && (t(i) <= 30);
        v(i) = 50.*t(i) + 2*((t(i)-20).^2.5);
    elseif (t(i) >= 30) && (t(i) <= 100);
        v(i) = 1520.*exp(-0.1.*(t(i)-30));
    elseif (t(i) >= -100) && (t(i) <= 0);
        v(i) = 0;
    end
end
end
#m file
clear all; clc; close all
t_start = input('enter the start time');
t_end = input('enter the end time');
VPieceWise(t_start,t_end)
plot(t,v)

1 Ответ

1 голос
/ 09 апреля 2019

Поскольку ваша функция имеет два выхода, вы должны также назначить их при вызове функции.Если вы этого не сделаете, в переменную ans будет помещен только первый вывод.

Итак, вызовите вашу функцию следующим образом:

clear all; clc; close all
t_start = input('enter the start time');
t_end = input('enter the end time');
[t,v] = VPieceWise(t_start,t_end);
plot(t,v)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...