線データを積み重ねてplot

14 Ansichten (letzte 30 Tage)
綾一 栗原
綾一 栗原 am 27 Jun. 2024
Kommentiert: 綾一 栗原 am 2 Jul. 2024
STFTした強度周波数データを,手前から奥に積み重ねてplotしたいです
イメージとしてはこのような図です(pが振幅スペクトル,fが周波数,tが時間)
よろしくお願いします.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 28 Jun. 2024
Bearbeitet: Atsushi Ueno am 29 Jun. 2024
mesh, meshzwaterfall など、surface & mesh系プロットで描けます。
両者の違いはデフォルトの描画スタイルや戻り値のオブジェクトです。
強度周波数データ (1次元配列) を積み重ねて2次元配列 y にしてください。
描画には 2 次元のグリッド座標も必要です。詳細は meshgrid を参照願います。
カメラ座標は view 関数や figure 上のマウス操作でグリグリ動かせます。
[t,x] = meshgrid(-3:.125:3); % グリッド座標
y = abs(peaks(t,x)); % 高さデータ
mesh(t,x,y,'MeshStyle','column','FaceAlpha',0);
% MeshStyle: 表示するエッジ:'row':横線のみ,'column':縦線のみ, 'both':両方
% FaceAlpha: 透明度:0が透明、1が不透明、0<FaceAlpha<1が半透明
  4 Kommentare
Atsushi Ueno
Atsushi Ueno am 29 Jun. 2024
出来上がった色データをみて気づいたのですが、色データとグリッドデータは同じ構造ですね。
なので meshgrid 関数を活用して色データを作るのも一つの手だと思います。
綾一 栗原
綾一 栗原 am 2 Jul. 2024
meshgridで色データがうまく作れなかったので,かなり強引にやりました.
%色データ
a=permute(colormap('lines'),[3,1,2]); %色情報生成
b=repmat(a,[size(y,1),round(size(y,2)/size(x,2)+1),1]); %無理やり配列サイズに延長
b=b(:,1:size(y,2),:); %余った分をトリミング
%plot
mesh(t,x,y,b,'MeshStyle','column','FaceAlpha',0);
%format
xlim([0,0.2])
ylim([1,1500])
set(gca,'YDir','reverse')
set(gca, 'XAxisLocation','origin' );
view([-75 25])
結果はこのようになりました
ちょっと見にくいですが狙い通りには行きました!
ありがとうございました!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2023a

Community Treasure Hunt

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

Start Hunting!