convert cell of 'True' and 'False' values to a numeric array of 1s and 0s

조회 수: 118 (최근 30일)
Lillian Rigoli
Lillian Rigoli 2020년 3월 30일
답변: Steven Lord 2021년 10월 8일
i have a 6432 x 1 cell containing values of either 'True' or 'False'.
I'm trying to convert the cell to a numeric array with a value of 0 for False and 1 for True.
I must be missing an obvious solution, but I feel like I've tried everything.
I've attached the cell array here.
Thank you.

답변 (4개)

Tommy
Tommy 2020년 3월 30일
편집: Tommy 2020년 3월 30일
You can try
tad = strcmp(tad,'True')

Lillian Rigoli
Lillian Rigoli 2020년 3월 30일
better answer from stack overflow:
f = zeros(size(tad));
f(strcmp(tad,'True')) = 1;

Lillian Rigoli
Lillian Rigoli 2020년 3월 30일
Ok i found a way that works but seems inefficient?
If anyone knows a better solution it'd be much appreciated.
t = find(strcmp(tad, 'True'));
tad(t,:) = {1};
f = find(strcmp(tad, 'False'));
tad(f,:) = {0};

Steven Lord
Steven Lord 2021년 10월 8일
s = {'true', 'false'};
C = s(randi(numel(s), 5, 5))
C = 5×5 cell array
{'true' } {'false'} {'false'} {'true' } {'true' } {'false'} {'false'} {'true' } {'false'} {'false'} {'true' } {'false'} {'false'} {'false'} {'true' } {'true' } {'false'} {'false'} {'true' } {'true' } {'true' } {'false'} {'true' } {'true' } {'true' }
L = matches(C, 'true')
L = 5×5 logical array
1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1
This same works if you wanted to use a string array.
ST = string(C)
ST = 5×5 string array
"true" "false" "false" "true" "true" "false" "false" "true" "false" "false" "true" "false" "false" "false" "true" "true" "false" "false" "true" "true" "true" "false" "true" "true" "true"
LST = matches(ST, 'true')
LST = 5×5 logical array
1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by