2017-10-31 6 views
0

以下は、データを正規化するためのmatlabコードです。誰かが後ろにアルゴリズムを説明してくださいできますか?私は非常にmatlabには新しく、私はその背後にある論理を理解したい。それは私には複雑に見えます。matlab正規化コードアルゴリズム

Tデータ行列である

G = [min(T,[],1);max(T,[],1)] 
h = bsxfun(@minus,T,G(1,:)); 
h = bsxfun(@rdivide,h,diff(G,1,1)) 

はどうもありがとうございました。

答えて

2

これは、非常に短いが、読めないmatlabコードの完全な例です。

最初の行では、変数Bを作成しています。変数Bは2つの入力だけの配列です。最初の入力は、最初の次元の変数Tの最小値です。 (イメージの読み込みの場合は、次元の例があります。最初の次元は幅、2番目は高さ、最後はカラーチャネルR、G、Bになります)。 2番目の入力は変数Tの最大値で、これも最初の次元です。 (ここではmatlabのmin dokuを参照してください:https://de.mathworks.com/help/matlab/ref/min.html

2番目の行は、Tと変数Gに対して要素的な操作(マイナス演算)を適用します。ただし、Gの場合は、最初の行をすべて取っています内部の要素。要素は、あなたがT(1)-G(1)をT(n)-G(n)までとっていることを意味します。

3番目の行では、h変数(前に定義した)のrdivide(公式のmatlab docuについてはrdivideここをクリックしてください:https://de.mathworks.com/help/matlab/ref/rdivide.htmlを参照)と第1次元のGと1の差。

diff(G,1,1):第1次元のGのn番目の差(https://de.mathworks.com/help/matlab/ref/diff.html)を計算します。だから、あなたが(1,2,3,4)のようなベクトルを持っていれば、2-1,3-2,4-3→(1,1,1)

rdivide(h, diff(G,1,1))のようになります。書く:A./B。これは、Bのすべての要素をAの対応する要素で除算することを意味します。例: A =(12,21,16)およびB =(2,3,4)結果は(12/2、21/3、16/4)→(6,7,4)

+0

ありがとうございます。これはとても明確です。今私はそれを理解する。 Tは実際に私の行列です。私が実行したとき、0から1までの要素を持つ行列が生成されました。上のコードが使用されていれば良いですか?したがって、コードがどのように機能しているかを把握し、出力が意味をなさないことを恐れていた理由がこれです。 –

+0

特にMatlabでは、短いコードを書くのは何らかの芸術です。これは短い場合、通常はより速く実行されるからです。だからいくつかのコメントを追加し、この部分が何をしているのかを理解するために次の読者を助け、それはうまくいくはずです。 – schnobi1