Matlabは、タイプ「XXX」の入力パラメーターに対応する関数「princomp」を定義していません。

今日、クラスメートから、MATLABコードの何が問題になっているのかを確認するのを手伝ってほしいと頼まれました。最初にコードを実行すると、最初の問題が発生します。

このGetSal関数は、ファイル外のカスタム関数です。現在実行中のディレクトリと関数が配置されているディレクトリが同じディレクトリにない場合は、コードにaddpath(カスタム関数が配置されているディレクトリ)を追加します。 。

このコード行を追加すると、再実行後に2番目の問題が発生します。

princomp関数はありません。最初の反応は最初の質問と同じです。その結果、関数はコードフォルダーに見つかりません。次に、2つの可能性があります。1つは作成者がそれを見逃したこと、もう1つは作成者がそれを見逃したことです。システム機能です。ただし、コマンドボックスでヘルプprincompを検索しても、結果は得られません。

 

しかし、printcompとprincompは同じものではないようです。それから、この関数をBaiduに行って、これを使用する方法についていくつかのブログを見つけることができますが、ブログの投稿日は14年前であり、関数が削除される可能性があると推測しています。 2015バージョンでは(私は2019を使用し、誰かが2015年にcsdnフォーラムでこの質問をしました)、インターネットからこの関数のコードまたは代替を見つけてください。

長い間検索したところ、この関数のコードが見つからなかったようですが、Baiduは次の知識を提供することを知っています(https://zhidao.baidu.com/question/1861253164912406107.html)。

つまり、システム関数pcaがprincompを置き換える可能性が非常に高く、princompを呼び出すコードでprincompがpcaに置き換えられている限り、これら2つの関数の入力と出力は類似しています(もう1つpca)。解決することはできますが、結果にAdd〜を取得する必要があります。つまり、[coeff、score、tsquared、〜] = pca(...)です。

しかし、root化とトレースにより、.pファイルによって呼び出されたことがわかりました。.pファイルは暗号化された.mファイルであり、カプセル化されて正常に開くことができないため、自己編集型のprincomp関数を使用してpcaを呼び出す方法を考えました。 、次にこれを自己編集します。関数は、彼を呼び出す.pと同じディレクトリに配置できます。

function [COEFF,SCORE,latent,tsquare] = princomp(X)
    [COEFF,SCORE,latent,tsquare,~]= pca(X);
end

 

おすすめ

転載: blog.csdn.net/qq_36614557/article/details/109585211