2017-03-13 3 views
0

データの最初の値を残りの列に追加または減算する方法を知りました。私は最初の数は符号を用いて負/正であるか否かを確認することができると思う列の最初の値を残りの列に加算または減算する(MATLAB)

0  0  0  0  0 
1  0.7 2.5 1.9 0.1 
1.2 2.1 4.1 3.7 1.1 

A = [13.2 12.4 -11.7 6.3 -4.0 
    14.2 13.1 -9.2 8.2 -4.1 
    14.4 14.5 -7.6 10.0 -5.1]; 

に変更しますデータの行は、これが、例えば0

あろう()を選択してifelseステートメントを使用してこれを追加するか減算するかを指定しますが、これを個々の列に個別に適用する方法がわかりません(またはこれが最善の方法です)。

事前に感謝します。

+0

最後の列に間違いがあったと思われますが、絶対値が必要ですか? – m7913d

+0

あなたが必要とするものは次のとおりです: 'bsxfun(@マイナス、A、A(1、:))' – Adiel

答えて

2

最初の行を選択して行列から引き出すことができます。

A = A - A(1, :) 

か、MATLABの古いバージョンのために:

A = A - repmat(A(1, :), size(A, 1), 1) 
3

あなたが実際にbsxfun状態の定義として、要素ごとの操作を必要としています。あなたのケースでは、それは次のようになります。

A = [13.2 12.4 -11.7 6.3 -4.0 
    14.2 13.1 -9.2 8.2 -4.1 
    14.4 14.5 -7.6 10.0 -5.1]; 

B=bsxfun(@minus,A,A(1,:)) 
B = 

     0   0   0   0   0 
    1.0000 0.7000 2.5000 1.9000 -0.1000 
    1.2000 2.1000 4.1000 3.7000 -1.1000 

これは、あなたの質問の説明のための結果ですが、あなたは追加たとえば、私はあなたがabsを追加する必要があるので、あなたは絶対値を望んでいることを前提としています

B=abs(bsxfun(@minus,A,A(1,:))) 
B = 

     0   0   0   0   0 
    1.0000 0.7000 2.5000 1.9000 0.1000 
    1.2000 2.1000 4.1000 3.7000 1.1000 
関連する問題