Написание .m класса, который решает задачи на Laplace и другие вещи - PullRequest
1 голос
/ 04 марта 2011

Я пытаюсь написать м.файл, который будет делать следующее, если я введу это в командном окне:

>> test
Enter the function: (s^2+6*s+9)/(s^3+2*s^2-s-2)
The Poles:
 -2
 -1
  1

The Zeros:
 -3
 -3

The Result:
1/(3*exp(2*t)) - 2/exp(t) + (8*exp(t))/3

The Initial Value:
  1

и вот моя попытка: (конечно, это не работает)

function y = f(s)
y = input('Enter the function: ');
[n d] = numden(y);
zeros = solve(n);
poles = solve(d);
yt = ilaplace(y);
disp('The Poles:');
disp(poles);
disp('The Zeros:');
disp(zeros);
disp('The Result:');
disp(yt);
disp('The Initial Value:');
disp(f(0));

1 Ответ

2 голосов
/ 04 марта 2011

Функции в Matlab работают подобно функциям в большинстве языков программирования: они ожидают список входных параметров и возвращают список выходных параметров:

function [out1 out2] = myFunc(in1, in2)

В вашем примере функция f возвращает пользователявход - это то, что вы хотите?Кроме того, входной параметр x никогда не используется и поэтому бесполезен.Если вы не используете ни входной параметр, ни выходной параметр - тогда зачем вообще использовать функцию?Вместо этого вы можете использовать скрипт Matlab.

В теле функции вы используете переменную func, которая никогда не определялась.Какую ценность вы ожидали иметь?Я предполагаю, что вы хотите передать пользовательский ввод функции numden, которая ожидает числовую или символьную матрицу.Вам придется преобразовать пользовательский ввод во что-то, что понимается под numden.Обратите внимание, что если вы хотите получить строку, введенную пользователем, вам придется использовать опцию 's' с input, иначе пользовательский ввод будет интерпретирован как выражение Matlab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...