
Spectrum Scope ブロックで計算した結果を MATLAB Workspace 上に保存できますか?
4 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 10 月 25 日
回答済み: MathWorks Support Team
2013 年 10 月 25 日
Spectrum Scope ブロックで計算した結果を MATLAB Workspace 上に保存できるか教えてください。
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!