Convert logical values into numeric values

I have a cell array 20000 rows and 20 columns with logical values:
A={0 0 0 0 1 0...
0 0 1 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0 ...}
And I would like to convert this array into numeric values of 1 and 0. Can someone help me? Thank you.

 采纳的回答

This works:
B = double(cell2mat(A));
The cell2mat call converts it from a cell to a logical array, and double converts it to a double array.

更多回答(3 个)

I wrote small code
for a=1:number of rows
for b=1:number of columns
if A(a,b)==true
new_matrix(a,b)=1;
else
new_matrix(a,b)=0;
end
end
end

2 个评论

This doesn't work either. Have you tried it?
??? Undefined function or method 'eq' for input arguments of type 'cell'.
for a=1:number of rows
for b=1:number of columns
if A{a,b}
new_matrix(a,b)=1;
else
new_matrix(a,b)=0;
end
end
end
That should work but it is maybe too complicated for you need.

请先登录,再进行评论。

Try this:
B = cell2mat(A).*1;

4 个评论

I just did. It doesn't work:
>> A = {1 0;0 1}
A =
[1] [0]
[0] [1]
>> B = A.*1;
Undefined operator '.*' for input arguments of type 'cell'.
@James —
Yours confirms my result:
A = {[1 0 1 1 0] == 1};
B = A.*1;
It throws the same error.
you're right, my fault. you need to convert from cell first. try:
B = cell2mat(A).*1;
... duplicating my Answer!

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Data Type Conversion 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by