1次元ウェーブレット​解析結果の点線及びぼ​かしの削除方法につい​ての質問

MATLABの1次元ウェーブレットの出力表示方法に関する質問です。(素人です)
色などの配列を波に見立てて、FFT.Wavelet変換を行う実験をしているのですが、
cwt(double(y1),'amor',Fs1)
grid on
上記のように1次元Wavelet解析のプログラムを入力し、出力結果を得ました。
この出力結果について、
「点線とぼかしの部分を消去し、かつグリット線を表示した状態で出力したい」
のですが、何か方法はありますでしょうか?
ご教授いただけますと幸いです。

5 Comments

Hiroyuki Hishida
Hiroyuki Hishida on 16 Nov 2020
細矢様、
その絵は、以下におけるwtを、リサイズ•擬似カラー表示しております。 https://jp.mathworks.com/help/wavelet/ref/cwt.html
ひとまずこの情報をもとに、検討してみていただけますでしょうか?
菱田
祐太郎 細矢
祐太郎 細矢 on 18 Nov 2020
菱田様
回答ありがとうございます。
指定された情報をもとに、プログラムを組んだところ、点線及びぼかし部分は消去できたのですが、グリット線が反映されなくなってしまいました。
[cfs1,f1] = cwt(double(y1),'amor',Fs1);
semilogy(1,1)
Wavelet1 = image('XData',dx,'YData',f1,'CData',abs(cfs1),'CDataMapping','scaled');
grid on
xlim([dx(1,1) dx(1,1200)])
ylim([f1(74,1) f1(1,1)])
少々無理やりではありますが、上記の通りのコードで行いました。
この画像に、初めの画像のようなグリッド線を入れる事はできますでしょうか。
また、おそらく画像の後ろに行ってしまっているグラフのグリット線を画像の前に持ってくることは可能でしょうか。
重ね重ね申し訳ありませんが、ご教授いただけると幸いです。
細谷様、
細谷様のコードをベースに、作ってみました。gridの入れ替えについて調べると時間が立ちそうだったので、少々、不格好ですが、以下はいかがでしょうか?
ここでは最後にxline(2000)とありますが、ここはx=2000の位置にX軸に垂直な線を引くことになります。オプション設定で色、透明度などを設定可能です。
Gridは画像の裏に隠れます。表示順序を入れ替えて・・・という場合ですが、スマートにやるならこちらが参考になるかもしれませんが、いかがでしょうか?
https://jp.mathworks.com/matlabcentral/answers/103931-
t=0:1/1000:10;
rng('default');
Fs1=1000;
y1=rand(10001,1);
[cfs1,f1] = cwt(double(y1),'amor',Fs1);
figure(1);
semilogy(1,1)
image('CData',abs(cfs1),'CDataMapping','scaled');
size(img)
xline(2000)
祐太郎 細矢
祐太郎 細矢 on 20 Nov 2020
菱田様
返信が遅くなって申し訳ありません
ご返答ありがとうございます。
提示していただいた特定の位置に線を引く方法及び、URL先を参考にし以下のようなプログラムを作成し、解決することができました。
ありがとうございます。
%Wavelet解析
Fs1 = 1/dx1;
dx11 = dx1*1000:dx1*1000:sunpou1*1000;
[cfs1,f1] = cwt(double(y1),'amor',Fs1);
semilogy(1,1)
Wavelet1 = image('XData',dx11,'YData',f1,'CData',abs(cfs1),'CDataMapping','scaled');
set(gcf,'Color','white');
for jikux1 = 1:sunpou1*1000
if rem(jikux1,50) == 0
xline(jikux1,'--');
end
end
y1max = Fs1/2;
for n =1:4
for jikuy1 = 1:10^n
if (rem(jikuy1,10^(n-1)) == 0) && (rem(jikuy1,10^n) == 0)
yline(jikuy1,'--','Linewidth',1);
elseif rem(jikuy1,10^(n-1)) == 0
yline(jikuy1,':','Linewidth',1);
end
end
end
xlim([dx11(1,1) dx11(1,1200)])
ylim([f1(74,1) f1(1,1)])
set(gca,'FontSize',14);
title('横方向Wavelet')
xlabel('x位置(mm)')
ylabel('波数(個/m)')
Hiroyuki Hishida
Hiroyuki Hishida on 21 Nov 2020
細矢様、
良かったです。
菱田

Sign in to comment.

Answers (0)

Asked:

on 16 Nov 2020

Commented:

on 21 Nov 2020

Community Treasure Hunt

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

Start Hunting!