在我的项目中,我使用了两个类 - 行和三角形。其函数中的类行创建三角类对象:
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);
我可以请你解释一下我做错了什么吗?
答案 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)?