『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

エクセルでノイズ値を除去できませんか。
ノイズ値除去をしたく、ネットで調べるとフーリエ変換という言葉が出てきます。
しかし、今一よくわかりません。
具体的には、
「2、5、7、5、8、21、6、10」という8個の数値があった場合に、
「21」をノイズ値として除去したいです。
実際にできるのでしょうか。
やり方を教えてください。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

#1です.



3σの外を切るような乱暴な方法とか,
はたまた,外れ値は自動的には除去できないとか,無責任な回答があったので,
修正しておきます.

私は,「ノイズを除去しても欠測値にはしない」という立場で書いてきましたが,
除去でよいのなら,次のような取り除き方があります.

まずベースラインを補正します.
これは例えば,小学生の身長のように,学年に比例する観測値なら
学年に比例する分を取り除き,一定信号に基準化する作業です.

次に全体のヒストグラムを作ります.
これが,フーリエ変換のような作業だと考えて下さい.

運よく二山になったら,山の隙間のどこかに閾値(しきい値)をとって,上側の山を切り落とします.
これはローパスフィルタのような作業です.

二山にならず,肩のこぶのようになっていたら,
ここから先はエクセルでは無理かと思いますが,
ガウス分布やガンマ分布をあてはめて,二山をフィットします.
次にそれらの関数を使って,閾値を決めます.
閾値は,第1種の過誤(α)と第2種の過誤(β)が同じになるように決め,
原信号の犠牲比率とノイズの混入比率を同等にします.
次に,閾値から上側を切り落とします.

このように,ノイズの除去には原信号の犠牲が伴い,
それに対する配慮が必要であることを分かって頂けたと思います.
3σの外を切るような乱暴な話ではありません.
    • good
    • 0

#1です.



#4さん,文献の補足,ありがとうございました.

ノイズの定義と言う逆質問があったので回答を書いておきますね.

そもそも観測データを信号として,
信号をなぜ「復元」しなければならないかというと
信号が変形しているからです.この変形を広義の「ノイズ」といいます.

しかし,変形には,ひずみと狭義のノイズ(誤差)があって,
ひずみは,原信号に対して時間的空間的規則性があったり原信号との相関性がありますが,
ノイズは,原信号に対して時間的空間的規則性がなく,原信号との相関もありません.
ノイズとは,外来成分や確率的劣化というものが重畳(チョウジョウ)していることをいいます.
(これが,ノイズの定義です.アンプの性能などで,歪率とSN比が分けて書いてありますよね)

よって,復元には前者に対する「補正」と後者に対する「平滑化・フィルタリング」があり,
規則性があるひずみは補正で戻りますが,ノイズは規則性がないので原信号を犠牲にしながら
均(なら)したり取り除くことが必要になります.

補正対象となるものには,(順不同(記憶から))
・ディレイ(遅延)
・反射
・オーバーシュート
・リンギング(ハンチング)
・立ち上がり(時定数付き応答)
・クロストーク
・サグ
などがあります.
これらは,負帰還などにより,消すことができます.
(最近のTVは画像補正をいっぱいやっているから,実際より絵が遅れて出ています.)

平滑化・フィルタリングの対象は,
・インパルスノイズ
・ガウシアンノイズ
などがあります.
    • good
    • 0

No.1 さんの かかれてる話と関連すると思われる資料があったので、揚げておきますね



http://www.ieice.org/jpn/books/kaishikiji/2005/2 …
    • good
    • 0

ノイズ値は外れ値を意味するとして説明しますが,外れ値を自動的に除去する方法はありません。

    • good
    • 0

質問者の「ノイズ」の定義が不明確です



定義を明確にすれば、それに則った処理を行うだけです
(例えば3σの範囲外とか)

定義を明確にすることです(質問者は、情緒的定性的にしか捉えられず、定量的な定義が必要なことに気付けていないようです)
    • good
    • 0

何をおやりになりたいのか良くわかりませんが,


参考までに書きます.

平滑化・フィルタリングにはさまざま種類があります.
2次元データの「メディアンフィルタ」くらいならエクセルでできるかもしれません.
メディアンフィルタについては,下記説明をご覧下さい.

最初に,フーリエ変換というのは,簡単な例を上げれば,
音楽(音の波形)を周波数分布のグラフに描き直すような操作です.
それをリアルタイムでやるのが,高速フーリエ変換(FFT)です.
例えば,せっかくの音楽に,ブーンというハム(電源ノイズ)が
混ざっていたとしましょう.
そのときは,音楽の音の波形から,そのブーンの周波数のところを
除けばいいのです.
もっと簡単には,ハイパスフィルタなんてのもあります.

おやりになりたいことが,通常の信号に対して,時々大きいノイズが
パツン,パツンと入っていて,それを除きたい,というのなら,
パツン,パツンはインパルスノイズといいまして,
それに有効なのがメディアンフィルタです.
中学で平均,モード(最頻値),メディアン(中央値)というのを
学びましたが,その値を使います.
画像であれば,あるピクセルの値とその隣接するピクセルの値を使って
メディアンをとり,中央のピクセルの値にするという方法です.


だんだん難しくなりますが,簡単に説明します.
ノイズがインパルスではなく,レンズのボケのような場合,
これをガウシアンノイズといいますが,ガウシアンフィルタというのをつかいます.
原理は移動平均のようなやりかたです.

さらに高度になれば,カルマンフィルタというものや
最新の手法では粒子フィルタという技法もありますが,
説明は樋口知之先生などの専門書に譲ります.
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q手軽に曲線の平滑化をしたい

手軽に曲線の平滑化をしたい

下図のような曲線に平滑化を施し、なめらかな曲線になるような値にしたいです。
エクセルには、A列に時間t、B列に時間ごとに得られたデータが出力されているとします。
エクセルの機能またはそれ以外の方法で簡単にできる方法はあるでしょうか?
知っている方教えてください。よろしくお願いします。

Aベストアンサー

Excelグラフの散布図から
グラフエリアを右クリック→グラフの平滑化で如何ですか

QEXCELにてローパスフィルタを作成する

実験の測定データをEXCELでデータ整理しようと考えております。データ整理のためローパスフィルタをかけたいのですが、具体的にどういった式、もしくはEXCELの機能を使用したらいいのでしょうか?デジタルフィルタが良く分からないのでよろしくお願いします。
ちなみにローパスフィルタは1000Hzをかけたいです。

Aベストアンサー

時系列データの処理ならば

OutputData(n+1) = OutputData(n) + (InputData(n+1) - OutputData(n)) * dt / T

dt:データのサンプリング間隔
T:フィルタの時定数 1/2πf
f:カットオフ周波数
n,n+1:それぞれn個目,n+1個目のデータをしめす。

でいけると思いますが、一次のパッシブなんで効果が薄いかも。(普通はベッセルかけるんでしょうけど、そこまではわからない)

Qエクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタの掛け方を教えてください。

タイトルどおりなのですが、エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタをかけたいです。

ご存知の方、よろしくお願いします。

Aベストアンサー

わたしはわかりませんが、こんなページがありました。

エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタの掛け方を教えてください。
出来ましたらそのまま使える式をお願いいたします。

http://q.hatena.ne.jp/1204546061

Q原波形のノイズ除去方法(FFT、逆FFT)

始めに、僕は数値解析等にはかなりの未熟者です。
今、微量な電流を拾ってそれを200倍に増幅した原波形があるのですが、それには多くのノイズがはいってしまい見にくいんです。それでそのノイズを除去したいのです。
今考えているのはFFTをかけてでてきた周波数を逆FFTを行いノイズを除去しようと考えています。もし他に簡単にノイズを除去できる方法があれば教えていただきたいのですが。
今、自分のなりの考えで行うとしてもその処理の仕方がまったくわかりません。どのソフトを使うのが最適なのかがわかりません。こういう場合で使いやすいソフトってありますか?

わかりにくい説明ではありますが、分かる人がいましたらアドバイスください。

Aベストアンサー

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得後にソフトウエアで行うものなどが有ります。

>多少信号のでている時間、大きさに誤差が出てきてしまう
とのことですが、フィルタを通した場合一般的には時間遅れが生じます。
どれだけ遅れるかはフィルタが決まれば決定されるのでその分補正すれば良いです。
大きさについては適切に設計されていれば大きくずれる事はありませんが
フィルタの種類によっては通過域でゲインが変化しないものと多少の変化があるものとが有るので用途によって使い分けします。

フィルタ処理の具体例を挙げます。
No.3さんの計算と同じものです。
/* FIRフィルタのサンプル */
#define DATA_SZ1000 /* データの個数 */
#define KN2
#define KEISU_SZ(2*KN+1) /* フィルタの係数の個数 */

float input[DATA_SZ]; /* 入力データ 適当な方法で初期化すること */
float output[DATA_SZ]; /* 出力データ */
float keisu[KEISU_SZ] = {1.0/KEISU_SZ} ; /* 移動平均フィルタの場合 */

void fir( float *in, float *out, float *ks ){
int i,j ;
float x;

  for( i=KN ; i<DATA_SZ-KN ; i++ )
    {
      x= 0 ;
      for( j=-KN : j<=KN ; j++ )
      {
         x += in[i+j] * ks[j+KN] ;
      }
      out[i] = x ;
   }
} /* インデントを付けるため全角スペースを使用しています */

もっと具体的には
入力データ d0,d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x2______  上下をそれぞれ掛け算したものの合計
x2 = ( d0*k0 + d1*k1 + d2*k2 + d3*k3 + d4*k4 )

出力のx3を求める場合は入力データを1個左にシフトします。
入力データ d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x3______ 
x3 = ( d1*k0 + d2*k1 + d3*k2 + d4*k3 + d5*k4 )

これから分かるように x0,x1 を求めるにはデータが足りません。
どこかから(例えばd0で置き換える)データを持ってくるか、無いものとするしかありません。

係数の数を増やせばより高性能なフィルタとすることが出来ます。
係数を決める、つまりはフィルタを設計する方法の説明はここでは難しいです。
次数がそれほど大きくなけれはエクセルでも計算できます。

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得...続きを読む

Qノイズの入った波形をきれいな波形にする方法

こんにちは。ギザギザになっている波形をきれいな波形にしたいのですが、方法が思い浮かばず困っています。

たとえば、このような式のデータがあったとします。
COS(2*3.1419*100*時間)+0.1*COS(2*3.1419*500*時間)-0.2*SIN(2*3.1419*800*時間)-0.1*COS(2*3.1419*10000*時間)+0.4*SIN(2*3.1419*25000*時間)

欲しい波形:COS(2*3.1419*100*時間)+0.1*COS(2*3.1419*500*時間)-0.2*SIN(2*3.1419*800*時間)
ノイズ:-0.1*COS(2*3.1419*10000*時間)+0.4*SIN(2*3.1419*25000*時間)
だと思ってください。

この波形をきれいな波形にしたいのですが、どのような方法で行うのがよいのでしょうか?
移動平均を取ってみたのですが、上手くいかず、困っています。参考になりそうなサイトの情報でも構いませんので何か手がかりをください。
よろしくお願いします。

こんにちは。ギザギザになっている波形をきれいな波形にしたいのですが、方法が思い浮かばず困っています。

たとえば、このような式のデータがあったとします。
COS(2*3.1419*100*時間)+0.1*COS(2*3.1419*500*時間)-0.2*SIN(2*3.1419*800*時間)-0.1*COS(2*3.1419*10000*時間)+0.4*SIN(2*3.1419*25000*時間)

欲しい波形:COS(2*3.1419*100*時間)+0.1*COS(2*3.1419*500*時間)-0.2*SIN(2*3.1419*800*時間)
ノイズ:-0.1*COS(2*3.1419*10000*時間)+0.4*SIN(2*3.1419*25000*時間)
だと思ってください。

こ...続きを読む

Aベストアンサー

No.1の方の回答が一番適切だと思いますが、それに対する質問者の反応がいまいちだったので補足します。
FFT(高速フーリエ変換)をご存知でしょうか。
今提示されている式は「信号成分」と「ノイズ分」は時間軸で記載されていますがこれをFFT解析することで周波数軸のデータに変換できます。ノイズは例えば信号成分に対し離れた周波数の場合に多いのでこの特性を利用して、周波数軸データからノイズの周波数成分をフィルタ関数などで取り除きます。
この後元の時間軸データに戻す作業がiFFT解析です。

もし、ノイズ成分が信号成分の周波数と近いならばNo.2の方の平均方法が適切です。
ノイズは一般にランダム性が強いので平均化でかなり取り除けるはずです。

前者のFFTソフトについてはVectorなど紹介されていますので探してみてください。

以上、参考まで。

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

QExcelで4096点以上のFFTの方法

Excelでは4096点までのFFTしかできませんが、4096点以上のFFTをかける方法(VB?)をご存知の方いらっしゃいましたらお教えください。

Aベストアンサー

下記などご参考まで。プログラムをそのまま公開されています。
http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html


#プログラムの始めのn=の行とDimの行の数字を適切に修正して使います。

Qエクセルで極大値を拾うには

 今エクセルで、グラフ化すると、
横軸:時間 
縦軸:電圧
で sinカーブのような波形となる数値データがあります。この振幅(山)の大きさは時間によって微妙に違います。振幅の平均値を取りたいのですが、何かいい方法ありますか?要は半周期での極大値を拾って、それを平均すればよいのですが方法が分かりません。

Aベストアンサー

グラフの元となったシートで、極大値は「左側のセルより大きく、かつ右側のセルより小さい」と言えると思います。

従って、a列に時刻、b列に電圧が入力されているとして
c2セルに
=if(and(b2>=b1,b2=<b3),b2,"")
と入力して、そのセルを最終行の1行前までコピーしたらよいと思います。

そしてc列の平均を取ればいいでしょう

極小値はd列に
=if(and(b2>=b1,b2=<b3),b2,"")
ですね。

なおb1にはダミーで数字のZEROを入れて下さい。

平均は
=AVERAGE(c2:cX) Xは最終データ行数
で求められます

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Qフーリエ変換した時のノイズの除去について

お世話になります。

フーリエ変換して得られたグラフで特定の周波数(予想される波)以外で全周波数帯域に渡り小さな振幅が現れています。測定ノイズなので、これを除去して綺麗なグラフを得たいと思います。

以前URLでデータを分割するor何度かデータを取りそれらを平均する事で、ノイズの波形を現象させて綺麗なグラフを得ているものを見ました。今その方法を詳しく見たいと思っているのですが、そのURLを見つけることが出来ません。

この様な方法を紹介しているURLや本等ご存知の方いらっしゃいましたら教えて頂けないでしょうか。よろしくお願いします。

Aベストアンサー

過去QAに理論解析した良回答があります。
http://okwave.jp/qa/q996942.html

別の関連雑音除去法ですが
http://www.kushiro-ct.ac.jp/library/kiyo/kiyo37/ohtsuki37.pdf


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング