在while循环的每个循环中,是否有一种方法可以将Matrix的值存储在单独的变量中,这样我就可以立即获得Matrix的所有值

时间:2019-04-30 16:52:46

标签: matlab

我想将Matrix(Matrix是矩阵的名称)值保存在一个单独的变量中,以便最终收集所有矩阵,然后一次打印所有矩阵。我当前的代码在每个循环中打印值,而我想在最后一个循环中获取矩阵的所有值。

syms num T1 T2 T3 T4 T3 T6 T7 T8 T9 T10 T5
%Getting data for Robot%
prompt = 'Enter the number of joints in your robot';
X = input(prompt);
num = 0;
while(num<X)
    matrix_number = ['t ',num2str(num),'_', num2str(num+1)];
    link_twist = ['Enter the value of twist(alpha) for the link number',num2str(num+1),' link e.g 10,80 etc'];
    disp(link_twist)
    al = input(prompt);
    link_length = ['Enter the value of offset(d) for the link number',num2str(num+1),' link e.g 1,2,3,4 etc'];
    disp(link_length)
    prompt = ''; 
    d = input(prompt);
    link_offset = ['Enter the value of link length(a) for the link number',num2str(num+1),' link e.g 1,2,3,4 etc'];
    disp(link_offset)
    prompt = ''; 
    a = input(prompt);
    link_theta = ['Enter the value of theta for the link number ',num2str(num+1),' link e.g T1, T2 etc'];
    disp(link_theta)
    prompt = ''; 
    theta = input(prompt);
    Matrix = [cosd(theta) -sind(theta) 0 a;
    sind(theta)*cos(al) cosd(theta)*cosd(al) -sind(al) -sind(al)*d; sind(theta)*sind(al) cosd(theta)*sind(al) cosd(al) cosd(al)*d;
    0 0 0 1];
    disp(matrix_number) 
    digits(2)
    printed_matrix = vpa(Matrix);
    pretty(printed_matrix)


    num = num+1;
end

1 个答案:

答案 0 :(得分:1)

使用cell array数据类型存储每次运行的整个矩阵。

在while循环之前,您将需要预分配数组Carray = cell([X,1])

然后,您可以使用num值为数组建立索引。您可以选择在增加num

之后立即放置此行
...
    num = num+1
    Carray{num} = Matrix
end

现在,您可以通过将索引传递到Carray中来访问每次运行生成的矩阵。

Mat3 = Carray{3}