2

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

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);

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

4

1 回答 1

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)?

于 2012-12-07T14:38:21.653 回答