В приведенном ниже коде я пытаюсь сохранить 8 символьную матрицу в MatRot
:
MatRot = zeros(4,4,8);
pkg load symbolic
theta = sym('theta',[1 8]);
d = sym('d',[1 8]);
alpha = sym('alpha',[1 8]);
a = sym ('a',[1 8]);
for i=1:8
MatRot(:,:,i) = [[cos(theta(1,i)), -cos(alpha(1,i))*sin(theta(1,i)), sin(alpha(1,i))*sin(theta(1,i)), a(1,i)*cos(theta(1,i))];
[sin(theta(1,i)), cos(alpha(1,i))*cos(theta(1,i)), -sin(alpha(1,i))*cos(theta(1,i)), a(1,i)*sin(theta(1,i))];
[0, sin(alpha(1,i)), cos(alpha(1,i)), d(1,i)];
[0, 0, 0, 1]];
end
Но Octave выдаст мне следующую ошибку:
error: operator =: no conversion for assignment of 'class' to indexed 'matrix'
error: called from
SymbolicMatRot at line 14 column 17
Я обнаружил, что вMATLAB Я могу создать символические многомерные массивы, как это:
A = sym('a',[2 2 2])
A(:,:,1) =
[ a1_1_1, a1_2_1]
[ a2_1_1, a2_2_1]
A(:,:,2) =
[ a1_1_2, a1_2_2]
[ a2_1_2, a2_2_2]
Но Octave выдает эту ошибку:
error: Cannot create symbolic matrix with that size
error: called from
assert at line 94 column 11
make_sym_matrix at line 23 column 3
sym at line 328 column 9
Я не знаю другой формы для хранения этого.
I 'м с использованием Win7 с GNU Octave версии: 4.4.1 и символической версии 2.7.1