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('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】:与其创建row
和col
值的网格以将ind
转换为可用于索引回d
的索引,不如使用@987654325 的第一个输出@ 其中包含沿第三维的那些最小值。
dm = min(abs(d), [], 3);
【讨论】:
您好 Suever,感谢您的回复。但是,在您的情况下, dm 是绝对值。在我的例子中,dm 是有符号的值。以上是关于MATLAB 求解符号矩阵中的符号值的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Maple 中的符号变量导出到文本文件(Matlab 格式)?