matlab 符号表达式正负,如何在Matlab上为符号表达式编写`lhs()`或`rhs()`函数
我在MATLAB中有一個帶有==運算符的符號表達式,我可以在solve()中使用它.我想要的是將表達式的左側和右側分成兩個單獨的符號表達式.
例如:
expr = sym('[1-x^2==2*y; 1+x^2==x+y]');
side1 = lhs(expr); % returns side1 = [1-x^2; 1+x^2];
當然,我的表達式要復雜得多,它總是矢量或矩陣形式.
解決方法1
我可以使用MuPAD內置函數lhs(),但我想知道是否可以僅使用MATLAB函數來完成此操作,并且我想讓它適用于表達式的向量而不僅僅是一個值.
這是我到目前為止按預期工作的.也許結果填充可以通過使用以某種方式進行矢量化:但我還沒有設法讓它工作.
function [ r ] = lhs( expr )
%LHS Returns the left hand side an expression
% LHS(sym('[1-x^2==2*y'; 1+x^2==x+y]')) = [1-x^2; 1+x^2]
cmd = @(e)['lhs(',char(e),')'];
[m,n] = size(expr);
r = sym(zeros(m,n));
for i=1:m
for j=1:n
r(i,j) = evalin(symengine, cmd(expr(i,j)));
end
end
end
總結
以上是生活随笔為你收集整理的matlab 符号表达式正负,如何在Matlab上为符号表达式编写`lhs()`或`rhs()`函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue.js
- 下一篇: 用java实现matlab的随机函数ra