質問

MatlabのFAQについて記述の一手法は地maximas:

index = find( diff( sign( diff([0; x(:); 0]) ) ) < 0 );

私がこの仕様は、場合によってはデータが少なかスムーズです。いデータがジャンプを取り出したり、小さな間隔でもあ概地maximas.ついてはどのように捉えていくについてこれらの拠点を教えてください。き分けるベクトルをn個の点の最大値がないのもあり優雅で高速な解決策です。

一線を解らせる可能性もあります。

編集: 私は作業騒音の生体画像として差入れます。

役に立ちましたか?

解決

によって欲しい、それは多くの場合、役立つフィルターの騒音データです。見 MEDFILT1, の使用 CONVFSPECIAL.後者のアプローチをく使いたいのは同じ'の引数CONVおよびガウスフィルター作成FSPECIAL.

しんだ後、フィルタリングのフィード、マキシマファインダー.

編集: 実行時の複雑性

そうすることで入力ベクトルの長さはXのフィルタのカーネルの長さK

の中央値はフィルターで仕事をすることによって走行挿入ソートを入力してくださいO(XK+K log K)私は見ていませんのソースコードおよびその他の実装が可能ですが、基本的にはO(XK)

Kが小さく、conv使用直前にはO(X*K)アルゴリズムです。Xが、Kとほぼ同じ、それよりは、高速フーリエ変換した。その実装はO(XログX+K log K)Matlabはスマートも自動的に選択、右のアルゴリズムによっては入力サイズです。

他のヒント

お使いいただくことによってタイプのデータだけを扱うのだが、ここでの方法を使い処理音声データなお現地のマキシマ。この三つの機能からの信号処理ツールボックス: ヒルベルト, バター, は、 FILTFILT.

data = (...the waveform of noisy data...);
Fs = (...the sampling rate of the data...);
[b,a] = butter(5,20/(Fs/2),'low');  % Create a low-pass butterworth filter;
                                    %   adjust the values as needed.
smoothData = filtfilt(b,a,abs(hilbert(data)));  % Apply a hilbert transform
                                                %   and filter the data.

うしごマキシマを見る smoothData.の使用を最初にヒルベルトを正封筒のデータをFILTFILT用フィルタの係数からバターをローパスフィルターのデータを同封してください。

どこの処理、イメした結果を示すためにセグメントに記録しました。青色の線はオリジナルの音声信号の赤いラインは、切手を貼った返信用封筒(頂いて使用するヒルベルト)のグリーンラインでのローパスフィルタ。下の図は、拡大版が初めてとなります。

alt text

何かをランダムなみ:

こうしたランダム行った最初の---きみを繰り返し処理のmaximasのmaximas:

index = find(diff(sign(diff([0; x(:); 0]))) < 0);
maxIndex = index(find(diff(sign(diff([0; x(index); 0]))) < 0));

しかし、場合によっては信号対雑音比でどのような多くのことが必要となる場合がある繰り返し、現地のマキシマに興味をもったかを記入します。はいランダム非フィルタリングのオプションについてです。=)

マキシマを見:

だん興味のある人は、他のラインマキシマ-の発見アルゴリズムなどの見(加の場は次のとおりである

index = find((x > [x(1) x(1:(end-1))]) & (x >= [x(2:end) x(end)]));
あなたのデータが跳ね上がり、ロットダウンした場合、

、その関数は、多くの極大値を持つことになります。 だから私はあなたがすべての極大値を検索したくないと仮定しています。しかし、極大値が何であるかのためのあなたの基準は何ですか?あなたは基準を持っている場合は、その1はそのためSCHEMまたはアルゴリズムを設計することができます。

私は今、多分あなたは最初に自分のデータにローパスフィルタを適用し、極大値を見つける必要があることを推測すると思います。フィルタリング後の極大値の位置は正確に前のものに対応しないかもしれない。

には二つの方法が用意されていな問題です。できることは、主に平滑化の問題をフィルタリングツールのデータは、その後に補間を用い様々なinterpolantいた補間スプライン.見地方最大の補間スプラインでも簡単に使いことです。(注いただくことが一般的使用の真のスプラインがここにではなく、pchip interpolant.Pchipの方法を指定した場合の"立方体"interpolantにinterp1ませんので正確な所在地minimizerについて、それぞれの間に二つのデータポイント。)

その他のアプローチなどの問題であることができます。ここで一つを使用し少なくともマスプラインモデルの両方のデータを近似結晶の代わりにinterpolant.など少なくともマスプラインのユーザーの制御を導入して、その知識の問題のモデルです。例えば、多くの研究者やエンジニアによるメンテナンス情報などの単調性の過程における研究です。これに組み込むことができる最小二乗法を用スプラインのモデルです。他、関連するオプションを用いて平滑化スプライン.いすぎを構築することによりregularizing制を築くなっています。ただし、次のスプラインツールボックス、spap2少しでも明るスプラインのモデルです。その後fnminますminimizer.(Maximizerは簡単に得られた最小のコードです。)

平滑化スキームを採用するフィルタリング手法は一般的に最も簡単な場合のデータポイントは等間隔.不等間隔が押し、少なくともマスプラインのモデルです。一方、結び目の配置できる問題に少なくともマスプライン.自分がこれらすべてにおいては、これらアプローチを効させることができるのは生ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top