主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

推定速度とメモリの管理

周波数応答推定を高速化する方法

周波数応答推定において最も時間がかかる操作は仿金宝app真软件®モデルのシミュレーションです。次のいずれかの方法を使用して,推定の高速化を試みることができます。

  • シミュレーション停止時間の短縮

  • アクセラレータモードの指定

  • 並列計算の使用

シミュレーション停止時間の短縮

周波数応答推定の実行に要する時間は,シミュレーション停止時間によって異なります。

シミュレーション停止時間を取得するには,モデル線形化器[線形解析ワークスペース]で入力信号を選択します。シミュレーション時間は[変数プレビュー]に表示されます。

MATLAB®コードを使用して,入力信号からシミュレーション停止時間を取得するには,次を行います。

tfinal = getSimulationTime(输入)

ここで输入は入力信号です。シミュレーション終了時間tfinalは,周波数応答推定の所要時間を示します。

信号プロパティを変更することで,シミュレーション時間を短縮できます。

入力信号 アクション 注意
Sinestream

特に低周波数において,周波数ごとの周期数NumPeriodsを減らします。

正確な周波数応答推定を得るために,モデルは定常状態でなければなりません。周期数を減らすと,定常状態に到達するのに十分な長さのモデルを励起しない可能性があります。

チャープ

信号のサンプル時間Tsまたはサンプル数NumSamplesを減らします。

推定された応答の周波数分解能は,サンプル数NumSamplesによって異なります。サンプル数を減らすと,推定された周波数応答の周波数分解能が低くなります。

入力信号の変更の詳細については,推定用の入力信号の変更を参照してください。

アクセラレータモードの指定

金宝app仿真软件でラピッドアクセラレータモードまたはアクセラレータモードを指定して,周波数応答推定の高速化を試みることができます。

詳細については,アクセラレーションとはを参照してください。

並列計算の使用

以下のような状況で,並列計算を使用して周波数応答推定の高速化を試みることができます。

  • モデルに複数の入力がある。

  • 単入力モデルがsinestream入力信号を使用し,ここで,SimulationOrderプロパティが値“OneAtATime”をもつ。

    このオプションの設定の詳細については,弗列斯特。Sinestreamのリファレンスページを参照してください。

このような状況の場合,周波数応答推定では複数のシミュレーションを実行します。并行计算工具箱™ソフトウェアをインストールしている場合は,これらの複数のシミュレーションを複数のMATLABセッション(MATLABワーカーの“プール”)に対して並列に実行できます。

並列計算の使用の詳細については,並列計算を使用した推定の高速化を参照してください。

並列計算を使用した推定の高速化

並列計算に対するMATLABの設定

並列計算を使用すると,複数のシミュレーションを実行する周波数応答推定を高速化できます。モデル線形化器およびfrestimateでは並列計算を使用できます。並列計算を使用して周波数応答の推定を実行する場合,ソフトウェアは使用可能な並列プールを使用します。使用可能な並列プールがなく,并行计算工具箱基本設定で[自动创建并行池]が選択されている場合,ソフトウェアはそれらの設定を使用して並列プールを開始します。

モデルの依存関係を自動的に検出し,それらを一時的に並列プールワーカーに追加するようにソフトウェアを設定できます。ただし,検出されないファイルおよびパスの依存関係にワーカーがアクセスできるようにするために,同じものを指定するクラスタープロファイルを作成します。モデルの最適化に使用される並列プールは,このクラスタープロファイルに関連付けなければなりません。クラスタープロファイルの作成の詳細については,クラスタープロファイルの追加と変更(并行计算工具箱)を参照してください。

特定のクラスタープロファイルを使用する並列プールを手動で開くには,次を使用します。

parpool (MyProfile)

MyProfileはクラスタープロファイルの名前です。

モデル線形化器で並列計算を使用した周波数応答の推定

並列計算の設定を行ったら,モデル線形化器を使用して,金宝app仿真软件モデルの周波数応答を推定できます(並列計算に対するMATLABの設定を参照)。

  1. モデル線形化器[推定]タブで(追加オプション]をクリックします。

    このアクションにより,[周波数応答の推定]ダイアログボックスのオプションが開きます。

  2. [並列オプション]タブで(推定中に並列プールを使用)チェックボックスをオンにします。

  3. (オプション)[パスの依存関係を追加)をクリックします。

    [フォルダーの参照]ダイアログボックスが開きます。モデルパスの依存関係を追加するディレクトリに移動し,選択します。

    (好的)をクリックします。

    ヒント

    または[モデルパスの依存関係]リストに手動でパスを指定します。改行で区切ることによって,複数のパスを指定できます。

  4. (オプション)[モデルからパスの依存関係の同期を取る]をクリックします。

    金宝app仿真软件モデルのモデルパスの依存関係を検出し,[モデルパスの依存関係]リストボックスに追加します。

並列計算を使用した周波数応答の推定(MATLABコード)

並列計算の設定を行ったら,金宝app仿真软件モデルの周波数応答を推定できます(並列計算に対するMATLABの設定を参照)。

  1. 金宝app仿真软件モデルが実行する必要があるファイルへのパスを見つけます。”“パスの依存関係と呼ばれます。

    dirs = frest.findDepend(模型)

    dirsは,参照モデル,データファイル,s函数などのパスの依存関係を含む文字ベクトルの细胞配列です。

    このコマンドの詳細については,frest.findDependを参照してください。

    モデルの依存関係の詳細については,モデル依存関係の解析および依存関係アナライザーの範囲と制限を参照してください。

  2. (オプション)dirsにすべてのパスの依存関係が含まれていることを確認します。不足しているパスがある場合,次のようにdirsに追加します。

    dirs = vertcat (dirs,' \ \主机名\ \ matlab \加元工作’
  3. (オプション)すべてのワーカーにdirsのパスへのアクセス権があることを確認します。

    ローカルドライブにいずれかのパスがある場合は,すべてのワーカーがローカルドライブにアクセスできるように指定します。たとえば,次のコマンドは,Cドライブへのすべての参照をすべてのワーカーがアクセスできる等価のネットワークアドレスに変換します。

    dirs = regexprep (dirs,“C: /“\ \ \ \加元主机名\ \ \ \ '

  4. 並列計算を有効にし,frestimateOptionsコマンドを使用して选项オブジェクトを作成し,モデルのパスの依存関係を指定します。

    选择= frestimateOptions (“UseParallel”“上”“ParallelPathDependencies”dirs)

    ヒント

    すべての推定に対して並列計算を有効にするには,MATLAB基本設定のグローバル設定[" frestimate "コマンドを使用する場合は並列プールを使用する]チェックボックスをオンにします。モデルにパスの依存関係がある場合は,推定を開始する前に,パスの依存関係を指定する独自の周波数応答オプションのオブジェクトを作成しなければなりません。

  5. 周波数応答を推定します。

    [sys, simout] = frestimate (“模型”、io、输入、选项)

並列計算を使用して推定を高速化する例については,並列計算を使用した周波数応答推定の高速化を参照してください。

周波数応答推定時のメモリの管理

周波数応答推定は,シミュレーションのデータが使用可能なメモリを超えると終了します。メモリ不足は,次のような状況で発生します。

  • モデルが長いシミュレーション中にデータのログを実行する。1e-3 rad/s の周波数で 4 つの周期をもつ sinestream 入力信号は、Simulink シミュレーションを 25,000 秒間実行します。到工作空间ブロックを使用して信号のログを作成する場合,この長さのシミュレーション時間ではメモリの問題が発生する可能性があります。

  • 5赫兹の周波数でシミュレートする(1周期につき0.2秒のシミュレーション),出力ポイントの離散サンプル時間1 e-8秒のモデルが,1周期につき 0.2 1 e 8 2 百万サンプルのデータを出す。通常,このデータ量には300 MB以上のストレージが必要です。

周波数応答推定中のメモリの問題を回避するには,次の手順に従います。

  1. 金宝app仿真软件モデルでの信号のログを無効にします。

    信号のログを作成するモデルコンポーネントを特定して信号のログを無効にする方法の詳細については,信号のログを参照してください。

  2. 次の節にリストされている1つ以上のアクションを試してください。

  3. 推定を繰り返します。

メモリの問題を回避するためのモデル固有の方法

メモリの問題を回避するには,モデルタイプに応じて,次の表にリストされている1つ以上のアクションを実行してください。

モデルタイプ アクション
出力ポイントで指定された高速の離散サンプル時間をもつモデル

出力ポイントで率转换ブロックを挿入してサンプルレートを下げると,ログデータの量が少なくなります。推定を行う前に、線形化出力ポイントを Rate Transition ブロックの出力に移動します。レート変換の結果、元の出力ポイントの場所にエイリアシングがないことを確認します。

サンプルレートの決定の詳細については,サンプル時間情報の表示を参照してください。推定に時間がかかる場合は,周波数応答推定を高速化する方法を参照してください。

多入力多出力ポイントをもつモデル(MIMOモデル)

メモリの問題を回避するための入力信号固有の方法

メモリの問題を回避するには,入力信号タイプに応じて,次の表にリストされている1つ以上のアクションを実行してください。

入力信号タイプ アクション
Sinestream
  • 周波数応答が必要でない入力信号から低周波数を削除します。

  • sinestream信号を変更し,SimulationOrderオプションをOneAtATimeに設定して,各周波数を個別に推定します。次にsys = frestimate(模型、io、输入)などのシミュレートされた時間応答の出力データを要求しないfrestimate構文を使用して推定します。

  • 並列計算を使用して,独立したシミュレーションを異なるコンピューターで並列に実行します。並列計算を使用した推定の高速化を参照してください。

  • fselectを使用して,入力信号を複数の信号に分割します。frestimateを使用して,各信号の周波数応答を個別に推定します。次に,fcatを使用して結果を結合します。

チャープ

弗列斯特。尖声地说を使用して元の信号のスイープ周波数範囲を小さなセクションに分割する個別の入力信号を作成します。frestimateを使用して,各信号の周波数応答を個別に推定します。次に,fcatを使用して結果を結合します。

乱数 推定を行う前にNumSamplesを変更して,乱数入力信号のサンプル数を減らします。時間応答にノイズが多いを参照してください。