Produce a matrix with the class of its elements

4 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));
Any thoughts? Help in advance.

Accepted Answer

Stephen23
Stephen23 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'

More Answers (1)

Fangjun Jiang
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 Comments
Andreas Georgakarakos
Andreas Georgakarakos on 1 Apr 2017
Hi, thanks for your reply. Now, I am getting this error:
Cell contents assignment to a non-cell array object. Error in whatclass (line 6) B{ii,jj} = {class(A(ii,jj))};
Any ideas?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!