How to build ratio between two columns of a matrix?

10 Ansichten (letzte 30 Tage)
Viet Duc
Viet Duc am 10 Sep. 2013
I have a matrix of size 102 x 2555 I want to select each column from 1 to 2555 of this matrix and then divide to each column of this matrix. For example: I have matrix
A=
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 4 6
5 6 8 7 1 3
I want to build the ratios like this:
ratio1=column1./each column in matrix A
ratio2=column2./each column in matrix A
ratio3=column3./each column in matrix A
....
ratio6=column6./each column in matrix A
Thanks for your help!

Akzeptierte Antwort

the cyclist
the cyclist am 10 Sep. 2013
A= ...
[1 2 3 4 5 6; ...
2 3 4 5 6 7; ...
3 4 5 6 4 6; ...
5 6 8 7 1 3];
[nrow,ncol] = size(A);
for n = 1:ncol
ratio{n} = bsxfun(@rdivide,A(:,n),A)
end
  4 Kommentare
Jan
Jan am 10 Sep. 2013
Bearbeitet: Jan am 10 Sep. 2013
@Viet Duc: As result you get 2555 matrices of type double with 102*2555 elements, which occupy about 5.32 GB. With a 16 GB machine and a 64 bit system, this is no problem, but it fails for a 32 bit machine.
Do you really need such a large pile of data simultaneously in the memory?
Andrei Bobrov
Andrei Bobrov am 10 Sep. 2013
num2cell(bsxfun(@rdivide,permute(A,[1 3 2]),A),[1 2])

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Viet Duc
Viet Duc am 11 Sep. 2013
Thank you all.
Maybe, I should check my matrix and remove some columns and rows

Kategorien

Mehr zu Numeric Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by