利用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]裏面的內容分別爲:

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