Я написал код, в котором я прошу пользователя ввести данные (цифры или символы) или их комбинацию. Но когда я пытаюсь напечатать эти входные данные в одну строку. Мне нужно преобразовать числа в строки с помощью 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)