Matlab类函数 - 获取返回值

时间:2012-12-07 14:27:22

标签: class matlab methods

在我的项目中,我使用了两个类 - 行和三角形。其函数中的类行创建三角类对象:

classdef row < handle

% some parameters here

methods

% constructor and some other functions here

function [T1 T2] = createFoR(obj, hT, Alpha, Beta, DeltaAlpha, DeltaBeta)
         % creating P1 matrix (irrelevant, its 100% correct)
         T1 = triangle(P1);
         % creating P2 matrix (irrelevant, its 100% correct)
         T2 = triangle(P2);
end

end

当我像这样调用这个行类函数时:

[T1 T2] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);

或者像这样:

[T(2,1) T2] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);

一切都很好。但是,当我尝试将两个返回的三角形对象分配给数组单元时,如下所示:

[T(2,1) T(2,2)] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);

我收到此错误:

Error using triangle (line 10)
Not enough input arguments.

Error in test (line 20)
[T(2,1) T(2,2)] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);

我可以请你解释一下我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

看起来T是一个对象,其中T(double,double)是一个函数/构造函数。所以在你指出的情况下

[T(2,1) T(2,2)] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);

你实际上是在调用T(double,double)三次,其中错误发生在T(2,2)中,(代码是100%正确吗?)。

更新自评论

奇怪的是三角形线10中的输入参数错误。问题可能在P1,P2?

您也可以尝试以下方法 - 但它的猜测没有我可以运行/重现问题(错误是在代码中没有列出?)

[T1 T2] = Row1.createFoR(T(1,1), Alpha, Beta, DeltaAlpha, DeltaBeta);
T(2,1:2) = [T1, T2];

<强>答案:

另一个想法是,当T(2,2)被填充时,它试图构造没有参数的T(1,2)?