Spectrum Scope ブロックで計算した結果を MATLAB Workspace 上に保存できますか?

4 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
Spectrum Scope ブロックで計算した結果を MATLAB Workspace 上に保存できるか教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
Spectrum Scope ブロックからは、スペクトルデータを直接 Workspace 上に出力できませんが、 Signal Processing Blockset のSignal Processing Sinks ライブラリ内にある、''Signal To Workspace ブロック'' をSpectrum Scope ブロック内に追加することにより可能です。
ブロック追加の手順は以下の通りです。
0) [R2012a のみ] Spectrum Scope ブロックを右クリックし、「ロックされたリンクのオプション」→「ライブラリブロックに移動」で表示されるライブラリ側のモデルにて以下の操作を行います。
- 「編集」→「ライブラリのロックを解除」
- 「編集」→「ライブラリへのリンクのロックを解除する」
- ライブラリ側モデルよりシミュレーションモデルへとインポート
- インポートされたモデルで Spectrum Scope を置き換え
1) Spectrum Scope ブロックを右クリックし、「リンクオプション」→「リンクを使用不可能にする」を選択します。
2) Spectrum Scope ブロックを右クリックし、「マスクブロックのモデル表示」を選択します。
3) Periodogram ブロックの出力に、 ''Signal To Workspace'' ブロックを追加します。
ブロックを追加した後、シミュレーションを実行すると、スペクトルデータが変数 yout としてワークスペース上に出力されます。(変数名は、Signal To Workspace ブロックのパラメータで設定可能です。)
なお、Signal To Workspace ブロックの代わりに、Simulink 基本モジュールの Sinks ライブラリ内にある ''To Workspace ブロック'' を使用することもできます。その際、To Workspaceブロックのパラメータで、[保存フォーマット]を「配列」に設定しておくと、上記と同等の結果を得ることができます。
なお、ここで Workspace 上に保存される変数 youtを Figure ウィンドウ上に表示する例を以下に示します。
Fs = 200;          % サンプリング周波数
yout = squeeze(yout);  % 1 の次元を削除
[n,m] = size(yout);    % yout のサイズ(n: FFT点数、m:総フレーム数)
f = Fs*(0:n/2)/n;     % 周波数ベクトルの作成
frn = 16;          % 観察したいフレーム
% ナイキスト周波数までをパワースペクトル表示
plot(f,yout(1:n/2+1,frn))
% デシベル表示
plot(f,10*log10(yout(1:n/2+1,frn)))
% 片対数スケールでデシベル表示
semilogx(f,10*log10(yout(1:n/2+1,frn)))

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeシミュレーション結果の表示と解析 についてさらに検索

製品


リリース

リリースが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!