nnz(cellfun(@(S) ismember('3',S), sprintfc('%4d',floor(A*10000))))
Finding how mych values contain a specific number in a matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lola Rapoport
el 20 de Abr. de 2018
Comentada: Walter Roberson
el 20 de Abr. de 2018
I built the next matrix:
A=rand(100, 100)
I need to find how much values contain '3' in the first four digits. I would like to know how to do that.
0 comentarios
Respuesta aceptada
Walter Roberson
el 20 de Abr. de 2018
2 comentarios
Walter Roberson
el 20 de Abr. de 2018
The '%4d' could be just '%d' here.
But if you were searching for 0's then you should use '%04d'
Walter Roberson
el 20 de Abr. de 2018
B14 = floor(A*10000); D4 = mod(B14, 10); B13 = (B14-D4)/10; D3 = mod(B13, 10); B12 = (B13-D3)/10; D2 = mod(B12, 10); D1 = (B12-D2)/10; nnz( any([D1(:), D2(:), D3(:), D4(:)] == 3, 2) )
Más respuestas (1)
David Fletcher
el 20 de Abr. de 2018
Editada: David Fletcher
el 20 de Abr. de 2018
Whilst I can admire the brevity of Walter's code, I might be inclined to use a more 'conventional' alternative
A=rand(100, 100);
extract=A; count=0; for iter=1:4 %Prepare integer value for examination extract=extract*10; %remove fractional part intVals=floor(extract); %running total of '3's in each column count=count+sum(intVals==3); %subtract integer portion ready for next loop extract=extract-intVals; %Remove numbers where 3 has been found extract(intVals==3)=0; end
total=sum(count);
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!