Есть ли способ, где Matlab видит, если пользователь ввел числа или строки, а затем печатает соответственно в командном окне - PullRequest
0 голосов
/ 02 мая 2019

Я написал код, в котором я прошу пользователя ввести данные (цифры или символы) или их комбинацию. Но когда я пытаюсь напечатать эти входные данные в одну строку. Мне нужно преобразовать числа в строки с помощью num2str (), но когда matlab видит, что пользователь ввел строку или символ, он может напечатать ее из-за num2str, поскольку он принимает только число. Можно ли как-нибудь избежать этой проблемы и вывести все введенные пользователем в одну строку? вот полный код для уточнения

syms num T1 T2 T3 T4 T3 T6 T7 T8 T9 T10 T5 d1 a1 a2 a3 a4 d1 d2 d3 d4
%Getting data for Robot%
disp('Enter the number of joints in your robot')
prompt = '';
X = input(prompt);
Carray = cell([X,1]);
Aarray = cell([X+3,4]);
Carray_1 = cell([X,1]);
num = 0;
num_1 = 0;
num_2 = 1;



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);
    Aarray{num+1,num+1} = al;
    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);
    Aarray{num+1,num+2} = d;
    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);
    Aarray{num+1,num+3} = a;
    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);
    Aarray{num+1,num+4} = theta;
    Matrix = [cos(theta) -sin(theta) 0 a;
    sin(theta)*cos(al) cos(theta)*cos(al) -sin(al) -sin(al)*d; sin(theta)*sin(al) cos(theta)*sin(al) cos(al) cos(al)*d;
    0 0 0 1];
    %disp(matrix_number) 
    digits(2)
    printed_matrix = vpa(Matrix);
    %pretty(printed_matrix)
    num = num+1;
    Carray{num} = printed_matrix;
    Carray_1{num} = printed_matrix;
end
matrix_number_1 = ['alpha_________offset_______length_______Theta'];
disp(matrix_number_1)
while (num_1<X)
        matrix_number_1 = ['|',num2str(Aarray{num_1+1,num_1+1}),'      |      ', num2str(Aarray{num_1+1,num_1+2}),'     |      ', num2str(Aarray{num_1+1,num_1+3}),'      |      ', num2str(Aarray{num_1+1,num_1+4})];
        disp(matrix_number_1)
        num_1 = num_1+1;
end 
matrix_number_1 = ['|___________________________________________|'];
disp(matrix_number_1)
while (num_1<X)
        matrix_number = ['t ',num2str(num_1),'_', num2str(num_1+1),' ='];
        disp(matrix_number)
        disp('')
        mat = Carray_1{num_1+1};
             pretty(mat)
        num_1 = num_1+1;
end 

while (num_2<X)
       Carray{num_2} = Carray{num_2}*Carray{num_2+1};
       if X+1-num_2==1
           break
       end
       Carray{num_2+1} = Carray{num_2};
       num_2 = num_2+1;
end

matrix_number = ['t0_',num2str(num_2+1)]
digits(3)
Mat_up = Carray{num_2};
Mat_up = vpa(Mat_up)
Mat_up_R1_3 = Mat_up(1,3);
disp('?2 =')
Mat_up_R1_3 = asin(Mat_up_R1_3)
Mat_up_R2_4 = Mat_up(2,4);
disp('?3 =')
Mat_up_R2_4 = acos((Mat_up_R2_4-a2*sin(Mat_up_R1_3))/a3*sin(Mat_up_R1_3))
Mat_up_R3_2 = Mat_up(3,2);
disp('?1 =')
Mat_up_R3_2 = acos(Mat_up_R3_2)-Mat_up_R2_4
d1 = Mat_up(3,4)-a3*sin(Mat_up_R3_2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...