# Produce a matrix with the class of its elements

15 views (last 30 days)
Input: 2-dimensional Matrix A
Output: Matrix B, having the same dimensions as A, where each element is the class of the corresponding element in A.
e.g. If A(1,1) = double, then B(1,1) = double
My code is as follows:
function B = whatclass(A)
[row,col] = size(A);
B = [];
for ii=1:row
for jj=1:col
B(ii,jj) = class(A(ii,jj));
end
end
end
I am getting the error below:
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Error in integerize (line 6) B(ii,jj) = class(A(ii,jj));

Stephen Cobeldick on 1 Apr 2017
Assuming that the input is a cell array (otherwise this task does not make much sense):
>> A = {double(1),single(2);uint8(3),int64(4)}
A =
[1] [2]
[3] [4]
>> B = cellfun(@class,A,'UniformOutput',false)
B =
'double' 'single'
'uint8' 'int64'

Fangjun Jiang on 31 Mar 2017
class(1) returns the string 'double'.
So you need to use B{ii,jj} = class(A(ii,jj))
##### 2 CommentsShowHide 1 older comment
Andreas Georgakarakos on 3 Apr 2017
Solved it, thanks a lot.