線データを積み重ねてplot

65 次查看(过去 30 天)
綾一 栗原
綾一 栗原 2024-6-27,19:44
评论: 綾一 栗原 2024-7-2,10:41
STFTした強度周波数データを,手前から奥に積み重ねてplotしたいです
イメージとしてはこのような図です(pが振幅スペクトル,fが周波数,tが時間)
よろしくお願いします.

采纳的回答

Atsushi Ueno
Atsushi Ueno 2024-6-28,14:39
编辑:Atsushi Ueno 2024-6-29,5:07
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 个评论
Atsushi Ueno
Atsushi Ueno 2024-6-29,4:58
出来上がった色データをみて気づいたのですが、色データとグリッドデータは同じ構造ですね。
なので meshgrid 関数を活用して色データを作るのも一つの手だと思います。
綾一 栗原
綾一 栗原 2024-7-2,10:41
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])
結果はこのようになりました
ちょっと見にくいですが狙い通りには行きました!
ありがとうございました!!

请先登录,再进行评论。

更多回答(0 个)

标签

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!