我写了一个函数“transform”,我传递了一个向量[0 * sym(pi),..],但是我得到了错误:使用sym / transform时出错 无法在类'sym'中访问方法'transform'。
我该如何解决这个问题?
transform.m
function [ t_vec ] = transform( points, angles,length )
t_vec = ones(3,size(angles,2))
for i = 1:size(angles,2)
iki = ikin(points(1,i),points(2,i),angles(i),length);
t_vec(1,i) = iki(1)
t_vec(2,i) = iki(2)
t_vec(3,i) = iki(3)
end
end
ikin.m
function [theta,theta2] = ikin(ox,oy,omega,length)
o_wrist = [ox-length(3)*cos(omega);oy-length(3)*sin(omega);0];
l = sqrt(o_wrist(1)^2+o_wrist(2)^2);
stuff = (l^2-length(1)^2-length(2)^2)/(2*length(1)*length(2));
theta(2) = atan2(real(sqrt(1-stuff^2)),stuff);
theta2(2) = atan2(real(-sqrt(1-stuff^2)),stuff);
IN = atan2(length(2)*sin(theta(2)),length(1)+length(2)*cos(theta(2)));
OUT = atan2(o_wrist(2),o_wrist(1));
IN2 = atan2(length(2)*sin(theta2(2)),length(1)+length(2)*cos(theta2(2)));
theta(1) = -IN+OUT ; %IN, IN2 negativ
theta2(1) = -IN2+OUT;
theta(3) = omega-(theta(1)+theta(2));
theta2(3) = omega -(theta2(1)+theta2(2));
end
test.m
p1_transformed_jsp = transform([0;1], 0*sym(pi), [1,1,1])
文件目的地:
项目/ test.m
项目/文件夹1 / ikin.m
项目/文件夹2 / transform.m
答案 0 :(得分:2)
你的问题缺乏细节,但如果我不得不猜测你会说你试图像这样调用你的方法:
myMethod(symObject);
而不是这样:
myObject.myMethod(symObject); % Dot notation
% or...
myMethod(myObject, symObject); % Function notation
如the documentation中所述,MATLAB将查看方法的输入参数的类,以确定要调用的类方法。当您仅使用sym
object调用方法时,MATLAB会在myMethod
类中查找名为sym
的方法(它找不到,因此您的错误)。要调用myMethod
的正确版本,您必须添加类对象myObject
作为第一个输入参数(即function notation)或使用dot notation。