2017-11-06 28 views
0

私は0 &の間で正規化したい一連のベクトルを持っています。これまでのところ、データを10kHzにリサンプリングしてノイズを除去し、エネルギーの変化を示す補助信号を作成しました。MATLABのベクトルを正規化する

私の次の仕事は、上記のベクトルを正規化することです。私は "normc"を使用しましたが、私はまだの間で正規化された私の列の値を得ることができません。

+2

*ご質問(「なぜこのコードは動作しませんの?」)必要な動作、特定の問題またはエラー、および質問自体にそれを再現するのに必要な最短のコードを含める必要があります。明確な問題文がない質問は、他の読者にとっては役に立たない*。 'normc'がうまく動作しない場合は、なぜ –

+2

[2D行列の個々の列の最小値の正規化]の可能な複製を表示します(https://stackoverflow.com/questions/29404157/min-max-normalization-of-individual- 2列目の列) –

答えて

0

私たちは列ベクトル、及びL2ノルムの話をしている場合、これはそれを行う必要があります。

a = a ./ repmat(sqrt(sum(a.^2)),size(a,1),1) 
0

normcはちょうど列ベクトルを取り、彼らはユークリッドノルムで長さ1を持っています。すべての個々の値が0と1の間になるようにデータを拡大しようとしている場合、それはかなり簡単です。

データが[a,b]の範囲にあり、範囲を[0,1]にする場合は、aに移動し、(b-a)で割ります。

nの行とmの列を持つ列ベクトルの行列を呼び出します。A私は、次の動作するはずだと思う:

A_min = repmat(min(A,[],1),n,1); 
A_max = repmat(max(A,[],1),n,1); 

A_scaled = (A - A_min)./(A_max-A_min); 

あなたが列に沿って拡張したい場合、あなたはどうなる:デバッグの助けを求める

A_min = repmat(min(A,[],2),1,m); 
A_max = repmat(max(A,[],2),1,); 

A_scaled = (A - A_min)./(A_max-A_min); 
関連する問題