Matlab:无法在类“matlabClass”中访问方法“myMethod”

时间:2017-08-09 12:52:57

标签: matlab methods

我写了一个函数“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

1 个答案:

答案 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