How total of column of a matrix can be kept be same????

1 回表示 (過去 30 日間)
suchismita
suchismita 2014 年 6 月 12 日
コメント済み: suchismita 2014 年 6 月 12 日
If I have a matrix A A=[ 0.4000 0.6000 0.8000 0.8000 1.0000 1.6000 0.9333 1.2333 0.0000 0.0000; 1.2000 0.6000 0.8000 0.8000 1.0000 0.4000 0.5333 0 0 0; 1.2000 1.4000 1.6000 1.6000 1.8000 2.4000 2.5333 2.8333 4.0000 4.0000; 1.2000 1.4000 0.8000 0.8000 0.2000 0 0 0 0 0] I want to keep the total of column to remain same as here the total of each column is as:
sum(A(:,1))
ans =
4
>> sum(A(:,2))
ans =
4
>> sum(A(:,3))
ans =
4
>> sum(A(:,4))
ans =
4
>> sum(A(:,5))
ans =
4
>> sum(A(:,6))
ans =
4.4000
>> sum(A(:,7))
ans =
4
>> sum(A(:,8))
ans =
4.0667
>> sum(A(:,9))
ans =
4
>> sum(A(:,10))
ans =
4
at 6th and 8th column its becoming more than 4 .... so here how can round of this to 4??? plz plz help.....
  3 件のコメント
suchismita
suchismita 2014 年 6 月 12 日
yes....if needed some should be deleted to get 4
suchismita
suchismita 2014 年 6 月 12 日
here in my example matrix can you help me in modifying without disturbing the zeros...please...like if in a column sum is more than 4 it should minus the rest and if its less it should add to make it 4... can you help me in that way...

サインインしてコメントする。

採用された回答

Jos (10584)
Jos (10584) 2014 年 6 月 12 日
This is called a normalisation procedure.
A = rand(10,6) % some random data
sumA = sum(A,1) % unequal column sums
normfun = @(a,b) 4 * (a/b)
Anorm = bsxfun(normfun, A, sumA) % normalise each column
sum(Anorm,1) % all 4, check!
  1 件のコメント
suchismita
suchismita 2014 年 6 月 12 日
thank u so much... but here in my example matrix can you help me in modifying without disturbing the zeros...please...like if in a column sum is more than 4 it should minus the rest and if its less it should add to make it 4... can you help me in that way...

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by