利用for循环生成元胞数组(计算结果为一向量,向量的每一个分量为一矩阵)

该程序为计算正交位移测量系统中位移传感器触点座标的程序。当被测基准块位姿发生改变时,位移传感器的示值发生改变,通过该程序,可以计算出不同位移传感器触点的新座标。for循环的目的是循环计算15个不同位姿下的位移传感器的座标。三点确定一个平面!有了新的座标,可以进行平面的计算。

主程序如下:

clc; clear all;close all
warning off
P0=[4  5  6;%S1
    7  8  9;%S2
    10 11 12];%S3
    %x  y  z 
v1=[1 1 1];%定义直线向量
L=-10*(rand(15,3)*2-1);%产生15*3的随机位移矩阵,定义不同动点到固定点P的距离,负号表示方向
P2=cell(9,1);P3_1=zeros(3,3);
for q=1:length(L)
   P2{q}=func(P0,v1,L(q,:)); 
 end

子程序如下:

function P1=func(P0,v1,L)
syms P01 P02 P03  v11 v12 v13 L1 L2 L3 %定义变量;
S11=P0(1,1);S12=P0(1,2);S13=P0(1,3);S21=P0(2,1);S22=P0(2,2);S23=P0(2,3);S31=P0(3,1);S32=P0(3,2);S33=P0(3,3);
v11=v1(1);v12=v1(2);v13=v1(3);L1=L(1);L2=L(2);L3=L(3);%变量赋值
P1(1,1)=S11+L1*v1(1)/norm(v1);%计算固定点1对应的动点X分量
P1(1,2)=S12+L1*v1(2)/norm(v1);%计算固定点1对应的动点Y分量
P1(1,3)=S13+L1*v1(3)/norm(v1);%计算固定点1对应的动点Z分量
P1(2,1)=S21+L2*v1(1)/norm(v1);%计算固定点2对应的动点X分量
P1(2,2)=S22+L2*v1(2)/norm(v1);%计算固定点2对应的动点Y分量
P1(2,3)=S23+L2*v1(3)/norm(v1);%计算固定点2对应的动点Z分量
P1(3,1)=S31+L3*v1(1)/norm(v1);%计算固定点2对应的动点X分量
P1(3,2)=S32+L3*v1(2)/norm(v1);%计算固定点2对应的动点Y分量
P1(3,3)=S33+L3*v1(3)/norm(v1);%计算固定点2对应的动点Z分量
P1;%程序输出

运行结果如下:

P2 = 

    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]
    [3x3 double]

每一个 [3x3 double]里面的内容分别为:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章