ここでようやくlennon310で問題を解決しました。時間-周波数画像に何千もの薄いピークの画像があります。一枚の写真ですべてを同時に見ることはできません。タイム ウィンドウの物理的な幅に応じて、表示されるウィンドウと表示されるウィンドウがあります。
私がプロットした私のデータの写真imagesc
すべての写真は、同じデータ ポイントT、F、Bからのものです。
Matlabの写真にすべてのピークを一度にプロットするにはどうすればよいですか?
ここでようやくlennon310で問題を解決しました。時間-周波数画像に何千もの薄いピークの画像があります。一枚の写真ですべてを同時に見ることはできません。タイム ウィンドウの物理的な幅に応じて、表示されるウィンドウと表示されるウィンドウがあります。
私がプロットした私のデータの写真imagesc
すべての写真は、同じデータ ポイントT、F、Bからのものです。
Matlabの写真にすべてのピークを一度にプロットするにはどうすればよいですか?
エイリアシング効果を防ぐために、リサンプリングを使用して画像のサイズを変更する必要があります(クレイギムは避けられないと説明しています)。
たとえば、MATLABimresize
関数はアンチエイリアシングを実行できます。「最も近い」サイズ変更方法を使用しないでください。それが現在のものです。
BenVoigtの回答に対する3番目の拡張
私は今絵をプロットします
imagesc([0 numel(T)], [0 numel(F)], B);
写真に大きなエイリアシングの問題があります。おそらく、このようなものは、時間-周波数表現を操作する必要があります
T = filter2(B,t); % you need a different filter kernel because resolution is lower
F = filter2(B,fs);
BenVoigtの回答に対する2番目の拡張
1 つのカーネル フィルターに対する私の提案は、相対ランダム エラーの畳み込みです。
data(find(data ~= 0)) = sin(pi .* data(find(data ~= 0))) ./ (pi*data(find(data ~= 0)));
data(find(data == 0)) = 1; % removing lastly the discontinuity
data1 = data + 0.0000001 * mean(abs(data(:))) * randn(size(data));
data = conv(data, data1);
これは、BenVoigt が配布用のカーネル フィルターによって意味するものですか?
これにより、次のような結果が得られます
解像度がまだ問題です。ウィンドウのサイズを変更すると、中央のピークが簡単に増加する傾向があります。
上の図で古いコードをアクティブにしましたが、結果は変わりませんでした。上記のコードは、ディスプレイのカーネル フィルターにはまだ十分ではありません。おそらく、いくつかのフィルター関数を時間軸と周波数軸に別々に適用する必要があります。たとえば、次のようになります。
F1 = filter2(B,T); % you need a different kernel filter because resolution is lower
T = filter2(B,F);
F = F1;
これらのフィルターは、両方の軸の値を台無しにします。これを修正するには、それらをよりよく理解する必要があります。ただし、最初に、それらが正しい方法であるかどうかを理解してください。
図はまだサイズ変更されています。データのサイズは 5001x1 double で、F と T は 13635x1 double です。したがって、軸、ラベル、タイトルを設定した後、最後にサイズを変更する必要があると思います
imresize(image, [13635 13635], 'bilinear');
分布は双一次であるためです。
BenVoigtの回答に対する3番目の拡張
imagesc
モニターのサイズを使用する代わりに、画像をどのくらい大きくするかを伝えようとする私の試みは、データが離れないようにするためです。
imagesc(T*t, F*fs, B, [50 50]);
% imagesc(T*t, F*fs, B');
% This must be last
imresize(image, 'bilinear', [64 30],);
コマンドimagesc
またはimresize
.
ここで画像のサイズを変更する正しい方法は何ですか?