2

私のプロジェクトでは、行と三角形の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)を3回呼び出していますが、エラーは特に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 に答える