問題タブ [matlab-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1895 参照

matlab - matlab のクラス ライブラリのグローバル変数

私はいくつかのmatlabクラスを宣言しています。すべてのクラスで見られる定数を宣言するにはどうすればよいですか?
たとえば、これらの定数は、すべてのクラスのメソッドで使用される物理定数にすることができます。最初に頭に浮かぶのは、グローバル変数の使用です。もっと良い方法はありますか?これらの定数を別のファイルで宣言すると便利です。

0 投票する
3 に答える
1479 参照

matlab - 関数ハンドルはいつ渡すことができますか?

キャッシュされた評価のための関数があります。引数の 1 つとして、関数ハンドルを取ります。状況によっては、関数ハンドルにアクセスできないことがありますが、その理由はよくわかりません。以下の例は、何が私を困惑させたかを示しています。

そのため、関数ハンドルを構造体のメンバーとして格納している場合、1 レベルの深さであれば問題なく渡すことができますが、2 レベルの深さでは渡すことができません。私の実際の使用例ではD、さまざまなクラスの多くの (117) インスタンスを保持する構造体があるため、実際にはstct.obj.methstctは構造体、objはクラス インスタンス/オブジェクト、methはメソッドです。パス@stct.obj.methは失敗しますが、 を割り当てるA = stct.objと、パスは@A.meth成功します。

どのような条件下で関数ハンドルを引数として渡すことができるので、スタックの下にアクセスできるようになりますか?


編集:上記のユースケースでは、すでに関数ハンドルである@ため、単純に削除できます。@plusただし、次の状況を考慮してください。

この場合、前が必要です...@A.a.mymeth

0 投票する
2 に答える
450 参照

matlab - クラスメソッドからの入力パラメータエラーが多すぎます

以下のようにMATLABでクラスを書きました:

このクラスのgetSize関数を使用すると、常に次のようなエラーが報告されます。

誰でも理由を知っていますか?

0 投票する
2 に答える
3224 参照

matlab - MATLAB で抽象クラス オブジェクトの配列を作成するにはどうすればよいですか?

例として、 という抽象クラスと という 2 つのサブクラスを作成し、両方Shapeがという (抽象) メソッドを実装しているとします。多数のandオブジェクトを作成し、それらを配列に格納し、配列を反復処理して各配列オブジェクトを呼び出すことができるようにしたいと考えています。CircleRectangleDrawCircleRectangleDraw

私は次のようなことを試しました:

形状.m:

Circle.m:

長方形.m:

test.m:

test.m を実行しようとすると、次のエラー メッセージが表示されます。

0 投票する
1 に答える
1568 参照

matlab - set メソッド MATLAB を使用する

同じ matlab クラス内の関数から Matlab クラスのプロパティの値を変更したいと考えています。つまり、クラスの関数の 1 つが、そのクラスのプロパティに割り当てたい値を生成しています。

これはクラスのプロパティです:

……で、これが設定方法です。

今、私は次のようなものを書きたいです:

別の関数から detTP プロパティの値を更新します。

どうすればいいですか?set 関数はどのように記述する必要がありますか (つまり、現在正しく記述されていますか)? また、新しい値をプロパティに割り当てるための構文はどのようになりますか。

よろしくお願いします。

0 投票する
2 に答える
82 参照

matlab - オブジェクトが持続しない

次のコードでは、 class のデストラクタがTdcTestResultfunction の最後で呼び出されるaddため、メソッド変数mTdcTestResultsは再び空になります。

TdcTestResult内部のインスタンスをmTdcTestResults永続化するにはどうすればよいですか?

0 投票する
3 に答える
2649 参照

matlab - プロパティ ブロックでクラス プロパティを別のクラス プロパティに代入しようとすると、MATLAB が "undefined variable" エラーをスローするのはなぜですか?

このコードを実行して単純なクラスを作成すると:

エラーが発生します:

どうしてこれなの?この最小限の例では、a) コンストラクターを配置してもエラーが引き続き発生するため、コンストラクターを省略しました。b) 単体テスト クラスでこのエラーが発生し、コンストラクターは MATLAB 2013b のそのようなクラスでは呼び出されません。

0 投票する
1 に答える
303 参照

matlab - matlab の oop パラダイムによって作成されるオーバーヘッドの量

matlab では、すべてのクラス メソッドは、最初の引数がオブジェクト自体である通常のメソッドのように見えます。

このようなパラダイムは、クラスが参照によって渡されるため、python などの他の oop 言語ではまったく受け入れられます。一方、matlab は既定でオブジェクトを値渡しします (ハンドル クラスを除く)。

これらすべてから、最も単純なセッター関数 (またはその他のクラス メソッド) を使用すると、オブジェクト全体がコピーされると推測されます。

たとえば、以下は matlab のクラス メソッドのシグネチャです。

この場合、fooObj.myfun(5) (または単に myfun(fooObj,5)) を呼び出すと、matlab は fooObj=foo() 全体をコピーしますか?

これは信じられないほど大きなオーバーヘッドではありませんか? すべてのクラス メソッド (およびセッター) のオブジェクト全体をコピーすることは、非常に効率が悪いように思えます。

私は何かが恋しいですか?oopテクニックを使用しながら、matlabでこのような状況を回避する方法はありますか?

このようなパフォーマンスのオーバーヘッドを防ぐために、ハンドル クラスを使用する必要がありますか?

0 投票する
1 に答える
1600 参照

matlab - Matlab はスーパークラス メソッドを呼び出すことができません

私は Matlab を初めて使用し、スーパークラス メソッドの呼び出しでいくつかの問題に直面しています。

私はこのコードを持っています:

スーパークラス test1:

サブクラス テスト:

継承は正しく機能します。スーパークラス関数は のスーパーtest1クラスとして表示されtestます。ただし、 を呼び出すとtest2@test1(obj)、エラーが返されます。

"@" メソッド内で、同じ名前のスーパークラス メソッドは、method@superclass と言って呼び出されます。「@」の左オペランドはメソッド名でなければなりません。

test2 メソッドは明らかにスーパークラス内に存在するため、何が問題なのtest1か正確にはわかりません。

0 投票する
1 に答える
108 参照

matlab - MATLAB: オブジェクトのプロパティにアクセスしようとするとエラーが発生します

返されるエラーは次のとおりです。Planet の 't' プロパティを取得できません。

Problem4dot10 のエラー (12 行目) name=mercury.t(mercury);

クラス Planet のプロパティを返すゲッター関数を作成しました。

そして、ファイル Problem4dot10.m からゲッターを呼び出しました。

ドキュメントを見て、それを理解しようとしました。私がやろうとしているのは、惑星の位置を追跡し、次の時間ステップで惑星がどこにあるかを計算する惑星クラスを作成することです。次に、その新しい状態を想定します。