24小时热门版块排行榜    

查看: 710  |  回复: 2

keekeelock

银虫 (小有名气)

[求助] matlab编程循环语句 跑两个理论相等矩阵 求助

各位大神求助,用matlab,循环求解最佳值,初始矩阵通过一定旋转和平移后变成另外一个结束矩阵,现在已经知道初始的矩阵和结束矩阵,求解过程的一个问题。我现在自己的想法是,设定几个变量,构造关系,让初始矩阵进行关于变量的运算,最后形成一个关于变量矩阵,通过这两个矩阵理论相等的关系,选取一个精度值,小于这个精度时跳出这样子,循环语句一直有问题,新手求助!!
%a=5,b=20,转动角=30,dx=10,dy=10,dz=10
%M1=[75 0 75;0 0 0;200 0 -200;1 1 1;];
clc;
M(1,1)=431.38;M(2,1)=449.42;M(3,1)=10.711;
M(1,2)=318.18;M(2,2)=531.11;M(3,2)=-150.96;
M(1,3)=329.28;M(2,3)=546.19;M(3,3)=-363.74;
M(4,1)=1;M(4,2)=1;M(4,3)=1;
jingdu=20;gama=97.27;
d=gama*pi/180;
G=sin(d);  H=cos(d);
Td=[H -G 0 0;G H 0 0;0 0 1 0;0 0 0 1];
M1=Td*M;
N(1,1)=75;N(2,1)=0;N(3,1)=200;
N(1,2)=0;N(2,2)=0;N(3,2)=0;
N(1,3)=75;N(2,3)=0;N(3,3)=-200;
N(4,1)=1;N(4,2)=1;N(4,3)=1;
tr1=[1 0 0 0;0 1 0 -11;0 0 1 0;0 0 0 1;];
tr2=[1 0 0 25;0 1 0 -100;0 0 1 200;0 0 0 1;];
tr3=[1 0 0 -210;0 1 0 880;0 0 1 40;0 0 0 1;];
tr4=[1 0 0 185;0 1 0 -160;0 0 1 -400;0 0 0 1;];
delta1=10;delta2=10;delta3=10;
dx=0;dy=0;dz=0;
for alfa=-10:0.1:10
    for bata=-20:0.1:20
a=alfa*pi/180;
A=sin(a);  B=cos(a);
Ta=[1 0 0 0;0 B -A 0;0 A B 0;0 0 0 1];
b=bata*pi/180;
C=sin(b);  D=cos(b);
Tb=[D 0 C 0;0 1 0 0;-C 0 D 0;0 0 0 1];
N1=(tr4*(tr3*(tr2*(Ta*(tr1*(Tb*N))))));
delta11=abs(M1(1,1)-N1(1,1)-(M1(1,2)-N1(1,2)));delta12=abs(M1(1,1)-N1(1,1)-(M1(1,3)-N1(1,3)));
delta21=abs(M1(2,1)-N1(2,1)-(M1(2,2)-N1(2,2)));delta22=abs(M1(2,1)-N1(2,1)-(M1(2,3)-N1(2,3)));
delta31=abs(M1(3,1)-N1(3,1)-(M1(3,2)-N1(3,2)));delta32=abs(M1(3,1)-N1(3,1)-(M1(3,3)-N1(3,3)));
dx=((M1(1,1)-N1(1,1))+(M1(1,2)-N1(1,2))+(M1(1,3)-N1(1,3)))/3;
dy=((M1(2,1)-N1(2,1))+(M1(2,2)-N1(2,2))+(M1(1,3)-N1(1,3)))/3;
dz=((M1(3,1)-N1(3,1))+(M1(2,2)-N1(2,2))+(M1(2,3)-N1(2,3)))/3;
sprintf('%8.4f %8.4f %8.4f %8.4f %8.4f',dx,dy,dz,alfa,bata)
i=i+1;
if delta11<jingdu&&delta12<jingdu&&delta21<jingdu&&delta22<jingdu&&delta31<jingdu&&delta32<jingdu
sprintf('无法输出解')  
sprintf('%8.4f %8.4f %8.4f %8.4f %8.4f',dx,dy,dz,alfa,bata)
break;
end
    end
end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

负责
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
1、不满足条件就不跳出
2、break只跳出内层循环,要全部跳出用return
3、如果只是想由一个输入矩阵得到一个输出矩阵,可用神经网络试试,有工具包
showmethemoney
2楼2013-12-02 16:56:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

keekeelock

银虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2013-12-02 16:56:05
1、不满足条件就不跳出
2、break只跳出内层循环,要全部跳出用return
3、如果只是想由一个输入矩阵得到一个输出矩阵,可用神经网络试试,有工具包

谢谢您的回复%
原理Td*M=(tr4*(tr3*(tr2*(Ta*(tr1*(Tb*N))))))
%现在已知M和N 求解a b dx dy dz
这个问题差不多就是说 已经知道输入的输出的矩阵 求解中间的变量这样子 您帮忙再看下 学习学习
负责
3楼2013-12-02 21:11:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 keekeelock 的主题更新
信息提示
请填处理意见