multiplying/dividing matrices that contain string variables and NaN
Mostrar comentarios más antiguos
Dear all
I have
I have
A= [
29 1;
27 4;
31 0;
28 3;
25 5;
]
and
B={'id1' 'id2' 'id3' 'id4'
[0.4607] [0.4400] [ 0.9167] [0.8701]
[0.4400] [0.4432] [ NaN] [ 0.8808]
[0.4432] [ 0.4419] [ 0.8808] [ 0.8809]
[0.4419] [NaN] [ 0.8809] [ 0.9156]
[0.4607] [0.4547] [ 0.9156] [ 0.9039]
}
and
A1=A(:,1)
And I want to calculate
sum(A.*B(:,1:2),2)/A1
sum(A.*B(:,3:4),2)/A1
in one step because my B contains 120 columns and I want to multiply A with every 2 columns of B that is B(:,1:2) B(:,3:4) B(:,5:6)
S0, I am looking something like
sum(A.*[B(:,1:2) B(:,3:4) B(:,5:6) ],2)/A1
thanks
2 comentarios
Sabbas
el 29 de Jul. de 2012
Oleg Komarov
el 29 de Jul. de 2012
As a general approach I would suggest to avoid storing double matrices in cell arrays, makes things unnecessarily complicated.
Respuesta aceptada
Más respuestas (1)
Oleg Komarov
el 29 de Jul. de 2012
Using the same approach from my answer to your previous post:
% First extract only the data
Bdata = cell2mat(B(2:end,:));
bsxfun(@rdivide,squeeze(nansum(bsxfun(@times, reshape(Bdata,5,2,[]),A),2)),A(:,1))
2 comentarios
Sabbas
el 29 de Jul. de 2012
Oleg Komarov
el 30 de Jul. de 2012
As should have at least one dimension the same length as the reshaped out2.
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!