all function B = all(A < 0.5,3)

This is straight forward to me:
A = [0.53 0.67 0.01 0.38 0.07 0.42 0.69]
A = 1×7
0.5300 0.6700 0.0100 0.3800 0.0700 0.4200 0.6900
B = all(A < 0.5,1)
B = 1×7 logical array
0 0 1 1 1 1 0
this also makes sense -
A = [0.53 0.67 0.01; 0.38 0.07 0.42 ]
A = 2×3
0.5300 0.6700 0.0100 0.3800 0.0700 0.4200
B = all(A < 0.5,2)
B = 2×1 logical array
0 1
But why does this yield the same result?
A = [0.53 0.67 0.01 1.1; 0.38 0.07 0.42 0.01]
A = 2×4
0.5300 0.6700 0.0100 1.1000 0.3800 0.0700 0.4200 0.0100
B = all(A < 0.5,3)
B = 2×4 logical array
0 0 1 0 1 1 1 1
OR
B = all(A < 0.5,4)
B = 2×4 logical array
0 0 1 0 1 1 1 1

1 Commento

"But why does this yield the same result?"
Consider the sub-arrays (i.e. vectors) along each of the specified dimensions: what values do they have in them? Remember that all arrays implicitly have infnite trailing singleton dimensions: the fact that each of those vectors for dimensions 3 and 4 happen to have one element in them is irrelevent, ALL applies its algorithm on that one element. It might help to revise this: https://www.mathworks.com/help/matlab/math/multidimensional-arrays.html
Lets consider the top left corner of your data:
A = [0.53 0.67 0.01 0.38 0.07 0.42 0.69];
A(1,1,:) % top left, all elements along 3rd dimension
ans = 0.5300
A(1,1,1,:) % top left page1, all elements along 4th dimension
ans = 0.5300
You can repeat this yourself for every other element in your matrix.
Question: what do you expect the result to be? Why?

Accedi per commentare.

Risposte (2)

the cyclist
the cyclist il 14 Giu 2023
Modificato: the cyclist il 14 Giu 2023
The reason is that all MATLAB arrays have implied singleton dimension beyond the 2nd dimension, if they have not been actually specified.
A = [0.53 0.67 0.01 1.1;
0.38 0.07 0.42 0.01];
size(A,47)
ans = 1
Torsten
Torsten il 14 Giu 2023
Spostato: Torsten il 14 Giu 2023

1 voto

But why does this yield the same result?
Because A has only 2 dimensions, not 3 or 4. Thus "all" operates on all elements separately in both cases.

1 Commento

Thus "all" operates on all elements separately in both cases., Yes, thats correct. But if one uses 'all' option it would do only once.
A = [0.53 0.67 0.01 1.1; 0.38 0.07 0.42 0.01]
A = 2×4
0.5300 0.6700 0.0100 1.1000 0.3800 0.0700 0.4200 0.0100
B = all(A < 0.5,'all')
B = logical
0
B = all(A < 0.5,3)
B = 2×4 logical array
0 0 1 0 1 1 1 1
B = all(A < 0.5,4)
B = 2×4 logical array
0 0 1 0 1 1 1 1

Accedi per commentare.

Categorie

Scopri di più su Operators and Elementary Operations in Centro assistenza e File Exchange

Prodotti

Release

R2022a

Tag

Richiesto:

il 14 Giu 2023

Modificato:

il 15 Giu 2023

Community Treasure Hunt

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

Start Hunting!

Translated by