問題タブ [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.
matlab - matlab のクラス ライブラリのグローバル変数
私はいくつかのmatlab
クラスを宣言しています。すべてのクラスで見られる定数を宣言するにはどうすればよいですか?
たとえば、これらの定数は、すべてのクラスのメソッドで使用される物理定数にすることができます。最初に頭に浮かぶのは、グローバル変数の使用です。もっと良い方法はありますか?これらの定数を別のファイルで宣言すると便利です。
matlab - 関数ハンドルはいつ渡すことができますか?
キャッシュされた評価のための関数があります。引数の 1 つとして、関数ハンドルを取ります。状況によっては、関数ハンドルにアクセスできないことがありますが、その理由はよくわかりません。以下の例は、何が私を困惑させたかを示しています。
そのため、関数ハンドルを構造体のメンバーとして格納している場合、1 レベルの深さであれば問題なく渡すことができますが、2 レベルの深さでは渡すことができません。私の実際の使用例ではD
、さまざまなクラスの多くの (117) インスタンスを保持する構造体があるため、実際にはstct.obj.meth
、stct
は構造体、obj
はクラス インスタンス/オブジェクト、meth
はメソッドです。パス@stct.obj.meth
は失敗しますが、 を割り当てるA = stct.obj
と、パスは@A.meth
成功します。
どのような条件下で関数ハンドルを引数として渡すことができるので、スタックの下にアクセスできるようになりますか?
編集:上記のユースケースでは、すでに関数ハンドルである@
ため、単純に削除できます。@plus
ただし、次の状況を考慮してください。
この場合、前が必要です...@
A.a.mymeth
matlab - クラスメソッドからの入力パラメータエラーが多すぎます
以下のようにMATLABでクラスを書きました:
このクラスのgetSize
関数を使用すると、常に次のようなエラーが報告されます。
誰でも理由を知っていますか?
matlab - MATLAB で抽象クラス オブジェクトの配列を作成するにはどうすればよいですか?
例として、 という抽象クラスと という 2 つのサブクラスを作成し、両方Shape
がという (抽象) メソッドを実装しているとします。多数のandオブジェクトを作成し、それらを配列に格納し、配列を反復処理して各配列オブジェクトを呼び出すことができるようにしたいと考えています。Circle
Rectangle
Draw
Circle
Rectangle
Draw
私は次のようなことを試しました:
形状.m:
Circle.m:
長方形.m:
test.m:
test.m を実行しようとすると、次のエラー メッセージが表示されます。
matlab - set メソッド MATLAB を使用する
同じ matlab クラス内の関数から Matlab クラスのプロパティの値を変更したいと考えています。つまり、クラスの関数の 1 つが、そのクラスのプロパティに割り当てたい値を生成しています。
これはクラスのプロパティです:
……で、これが設定方法です。
今、私は次のようなものを書きたいです:
別の関数から detTP プロパティの値を更新します。
どうすればいいですか?set 関数はどのように記述する必要がありますか (つまり、現在正しく記述されていますか)? また、新しい値をプロパティに割り当てるための構文はどのようになりますか。
よろしくお願いします。
matlab - オブジェクトが持続しない
次のコードでは、 class のデストラクタがTdcTestResult
function の最後で呼び出されるadd
ため、メソッド変数mTdcTestResults
は再び空になります。
TdcTestResult
内部のインスタンスをmTdcTestResults
永続化するにはどうすればよいですか?
matlab - プロパティ ブロックでクラス プロパティを別のクラス プロパティに代入しようとすると、MATLAB が "undefined variable" エラーをスローするのはなぜですか?
このコードを実行して単純なクラスを作成すると:
エラーが発生します:
どうしてこれなの?この最小限の例では、a) コンストラクターを配置してもエラーが引き続き発生するため、コンストラクターを省略しました。b) 単体テスト クラスでこのエラーが発生し、コンストラクターは MATLAB 2013b のそのようなクラスでは呼び出されません。
matlab - matlab の oop パラダイムによって作成されるオーバーヘッドの量
matlab では、すべてのクラス メソッドは、最初の引数がオブジェクト自体である通常のメソッドのように見えます。
このようなパラダイムは、クラスが参照によって渡されるため、python などの他の oop 言語ではまったく受け入れられます。一方、matlab は既定でオブジェクトを値渡しします (ハンドル クラスを除く)。
これらすべてから、最も単純なセッター関数 (またはその他のクラス メソッド) を使用すると、オブジェクト全体がコピーされると推測されます。
たとえば、以下は matlab のクラス メソッドのシグネチャです。
この場合、fooObj.myfun(5) (または単に myfun(fooObj,5)) を呼び出すと、matlab は fooObj=foo() 全体をコピーしますか?
これは信じられないほど大きなオーバーヘッドではありませんか? すべてのクラス メソッド (およびセッター) のオブジェクト全体をコピーすることは、非常に効率が悪いように思えます。
私は何かが恋しいですか?oopテクニックを使用しながら、matlabでこのような状況を回避する方法はありますか?
このようなパフォーマンスのオーバーヘッドを防ぐために、ハンドル クラスを使用する必要がありますか?
matlab - Matlab はスーパークラス メソッドを呼び出すことができません
私は Matlab を初めて使用し、スーパークラス メソッドの呼び出しでいくつかの問題に直面しています。
私はこのコードを持っています:
スーパークラス test1:
サブクラス テスト:
継承は正しく機能します。スーパークラス関数は のスーパーtest1
クラスとして表示されtest
ます。ただし、 を呼び出すとtest2@test1(obj)
、エラーが返されます。
"@" メソッド内で、同じ名前のスーパークラス メソッドは、method@superclass と言って呼び出されます。「@」の左オペランドはメソッド名でなければなりません。
test
2 メソッドは明らかにスーパークラス内に存在するため、何が問題なのtest1
か正確にはわかりません。
matlab - MATLAB: オブジェクトのプロパティにアクセスしようとするとエラーが発生します
返されるエラーは次のとおりです。Planet の 't' プロパティを取得できません。
Problem4dot10 のエラー (12 行目) name=mercury.t(mercury);
クラス Planet のプロパティを返すゲッター関数を作成しました。
そして、ファイル Problem4dot10.m からゲッターを呼び出しました。
ドキュメントを見て、それを理解しようとしました。私がやろうとしているのは、惑星の位置を追跡し、次の時間ステップで惑星がどこにあるかを計算する惑星クラスを作成することです。次に、その新しい状態を想定します。