Я хотел бы определить матрицу символических функций (не переменных) в Matlab. В рабочей области я хотел бы, чтобы это был элемент класса symfun размера N-by-M (где N
и M
- целые положительные числа).Матрица символических функций
ответ
Я не знаю, как создать матрицу, но клетка возможно:
c={symfun(x+y, [x y]),symfun(x+2*y, [x y]);symfun(x+3*y, [x y]),symfun(x+4*y, [x y])}
Может быть, это достаточно в вашем случае.
Мне нужна матрица, но, как вы сказали, я не могу это сделать, просто прочитав документацию ... –
Вы не можете создать матрицу symfun
элементов класса (возможно, по той же причине, что один can't create a matrix of function handles), но вы можете создать символическую функцию, которая возвращает матрицу символических выражений:
syms x y z;
Afun = symfun([x+y y-z;y/x z-1],[x y z])
B = Afun(sym(pi),cos(y),z^2)
Конечно вы не сможете получить прямой доступ к элементам Afun
пока не оценить его, хотя вы можете использовать formula
, чтобы извлечь их:
Amat = formula(Afun);
Amat(1)
можно сцепить symfun
s в матрицу при условии, что все они имеют одинаковые входные аргументы (аргументы не должны использоваться). Однако конкатенация по-прежнему не образует матрицы symfun
s - она просто конкатенирует сами формулы, поэтому вы все равно получаете один symfun
, как указано выше.
Другой вариант заключается в создании матрицы символических выражений, например:
syms x y z;
A = [2*x 3*y^2 x+z;
-y^3+1 sin(x) sym('pi');
3.5 exp(-z) 1/x];
, которые могут быть оценены с помощью subs
:
B = subs(A,{x,y,z},{sym(pi),cos(y),z^2})
И нормальные матричные операции работать, например:
B = subs(A(2,:),{x,y,z},{sym(pi),cos(y),z^2})
Спасибо большое, очень полезно! –
Если вы, например, хотите устроить анонимную символическую функцию ионов в векторе можно сделать следующим образом:
z = sym([]); %declare z as an empty symbolic array
N = 6; %array size
for i = 1:N
syms(sprintf('z%d(t)', i)) %declare each element in the array as a single symbolic function
zz = symfun(sym(sprintf('z%d(t)', i)), t); %declare each element to a symbolic "handle"
z = [z;zz]; %paste the symbolic "handle" into an array
end
Имейте в виду, что MATLAB рассматривает г как 1x1 символической функции, даже если она содержит больше элементов. z будет по-прежнему вести себя как вектор, поэтому вы можете использовать его как обычный вектор в операциях матрицы-вектора.
- 1. матрица внутри матрицы при умножении символических матриц
- 2. Построение символических функций в Matlab
- 3. Построение символических функций Параметры Matlab
- 4. Элементная оценка символических функций в Matlab
- 5. Как извлечь матрицу символических функций в Matlab
- 6. MatLab Plotting Матрица функций измерения Ошибка
- 7. Matlab символических собственных векторы
- 8. Матрица Матрица Матрица умножения C++
- 9. Диагональная символьная матрица
- 10. Способы отправки без символических ссылок
- 11. сила символических ссылок
- 12. Проверка символических вычислений
- 13. Символических переменные с
- 14. MATLAB замена символических переменных
- 15. Изменение символических ссылок
- 16. Внедрение символических вычислений
- 17. Матрица внутренняя матрица MATLAB
- 18. Матрица строк Матрица Java
- 19. Матрица TfIdf возвращает неправильное количество функций для BernoulliNB
- 20. Матрица понижающего матрица в R?
- 21. Модель Матрица Матрицы * Матрица Проекции
- 22. Создание virtualenv без символических ссылок
- 23. Загрузка символических ссылок на сервер
- 24. realpath() без разрешения символических ссылок?
- 25. Java 1.6 - определение символических ссылок
- 26. Отражающий язык для символических вычислений
- 27. Использование символических переменных в Simulink
- 28. Создание символических ссылок для tmux
- 29. подкачки элементов заданных символических матриц
- 30. символических ссылок папки в Баш
читайте http://www.mathworks.com/help/symbolic/symfun.html и http://www.mathworks.com/help/symbolic/creating-symbolic-variables-and-expressions.html#bs_tekf- 1 – mhmsa
@mhmsa: Вы прочитали документацию? Используя эти страницы, мне не удалось добавить symfun в матрицу. Все, что мне удается создать, - это symfun, возвращающий матрицу. – Daniel