How can I count the sum of inverse value of each non zero elements of a matrix?
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Md. Asadujjaman
el 20 de Feb. de 2022
Comentada: Md. Asadujjaman
el 20 de Feb. de 2022
Suppose,
x=[2 1 0 0
0 1 1 1
0 1 1 1
1 0 3 1]
How can I count the sum of inverse value of each non zero elements?
The answer would be = sum (1/2 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/3 + 1/1) = 9.83
How can I count the sum of inverse value of each non zero elements when x also contains NaN?
e.g.,
x=[2 1 0 NaN
0 1 1 1
0 1 1 1
1 0 3 1]
0 comentarios
Respuesta aceptada
Image Analyst
el 20 de Feb. de 2022
Editada: Image Analyst
el 20 de Feb. de 2022
x=[2 1 0 0
0 1 1 1
0 1 1 1
1 0 3 1]
numNonZeros = nnz(x)
Not sure what you want for the second question since your sum does not include all 16 elements.
x2=x;
x2(x==0) = 1
s = sum(1./x2(:))
% Sum 11 of the 16 -- only some of them for some reason.
% Not sure which to take and which to exclude.
thesum = (1/2 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/3 + 1/1) % 11 of the 16
% Now sum all 16
thesum = (1/2 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/1 + 1/3 + 1/1)
If this is your homework, you're most likely not allowed to turn my code in as your own. And please tag it as homework if it is.
Regarding your edit, to sum up only elements where x is not zero:
x2=x(:); % Make a copy as a column vector.
x2(x==0) = [] % Remove the zeros.
s = sum(1./x2(:))
3 comentarios
Image Analyst
el 20 de Feb. de 2022
Editada: Image Analyst
el 20 de Feb. de 2022
OK, thanks for Accepting. If you have a newer version of MATLAB you can use the 'omitnan' option like Matt showed below.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!