MATLAB 求解符号矩阵中的符号值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 求解符号矩阵中的符号值相关的知识,希望对你有一定的参考价值。

>> syms x y;
A=[x+y x-y;1 3];
B=[8 4;1 3];
当A=B时,求x、y的值,该怎么做?
我用solve('A=B','x','y');老是出错!
syms theta1 theta2 theta3;
L1=link([0,0,theta1,0]);L2=link([0,4,theta2,0]);
L3=link([0,3,theta3,0]);L4=link([0,2,0,0]);
r1=robot(L1,L2,L3);r2=robot(L1,L2,L3,L4);
q1=[theta1 theta2 theta3];
q2=[theta1 theta2 theta3 0];
T1=fkine(r1,q1);T2=fkine(r2,q2);
其中T1、T2都是含有theta1、theta2、theta3的4×4符号矩阵,现在已知T2=T,T是一个具体值的矩阵,如T=[1 0 0 9;0 1 0 0;0 0 1 0;0 0 0 1];那么怎样求解参数theta1、theta2、theta3? 这是一个机器人逆运动学求解过程。

你这个涉及到了方程组的解法:格式为: SOLVE('eqn1','eqn2',...,'eqnN','var1,var2,...,varN')追问

写成solve('A(1,1)=B(1,1)','A(1,2)=B(1,2)','x','y');也会出错·

追答

这样就可以:
a=solve('x+y=8','x-y=4','x','y')

a =

x: [1x1 sym]
y: [1x1 sym]

>> a.x

ans =

6

>> a.y

ans =

2

追问

a=solve('x+y=8','x-y=4','x','y')
如果A矩阵是通过计算得出的,我并不知道第一个元素是x+y,那么你这种写法就没意义了,能否有其他写法?

追答

这种的好像不行吧

参考技术A 可以这样求:
[x,y]=solve('x+y=8','x-y=4')
得到x=6
y=2
参考技术B syms x1 x2;
A=[2 3;4 5];
B=[A(1,:),A(2,:)];
C=[x1^2,x1,x2^2,x2];
pp=C*B'
说具体点吧,什么样的数据?

在 MATLAB 中找到三维矩阵中的有符号最小值

【中文标题】在 MATLAB 中找到三维矩阵中的有符号最小值【英文标题】:find the signed minimum value in a three dimensional matrix in MATLAB 【发布时间】:2017-06-30 12:55:08 【问题描述】:

我有一个 3D 矩阵 d,我想沿着第三维找到有符号的最小值。目前,我使用以下代码

tmp = abs(d);
[row, col]=ndgrid(1:size(d,1),1:size(d,2));

[v,ind] = min(tmp,[],3); 
index = row + size(d,1)*size(d,2)*(ind-1)+ size(d,1)*(col-1); %turn the ind to index
dm = d(index); %get the signed minimum value

上面的代码效率不高。有人知道更好的选择吗?谢谢!

【问题讨论】:

【参考方案1】:

与其创建rowcol 值的网格以将ind 转换为可用于索引回d 的索引,不如使用@987654325 的第一个输出@ 其中包含沿第三维的那些最小值。

dm = min(abs(d), [], 3);

【讨论】:

您好 Suever,感谢您的回复。但是,在您的情况下, dm 是绝对值。在我的例子中,dm 是有符号的值。

以上是关于MATLAB 求解符号矩阵中的符号值的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB 中找到三维矩阵中的有符号最小值

matlab符号求解器:如何在答案中包含点运算符

如何将 Maple 中的符号变量导出到文本文件(Matlab 格式)?

如何用matlab求解常微分方程?matlab解常微分方程之符号解法介绍

MATLAB的符号运算变量如何创建?

Matlab在线性代数中的应用:求解非齐次线性方程组