如何在MATLAB表中将逻辑列转换为双精度



对于我的任务,我需要将表中的所有逻辑列转换为双精度。表已经排序了,所以我想保持列的顺序。

这里有一个小例子:

SomeString={'one';'two';'three'}
SomeNumbers={1;2;3}
SomeLogicals=[true; false; true]
T=table(SomeString, SomeNumbers, SomeLogicals)
T(:,vartype('logical'))=cell2table(cellfun(@double,table2cell(T(:,vartype('logical'))),'uniformOutput',false))

为什么这些列仍然符合逻辑?

T(:,vartype('logical'))
3×1 table
SomeLogicals
________
true     
false    
true

我该如何转换它们?

根据您对我的评论的回复,这应该是您想要的

logicalColumns = T.Properties.VariableNames(cellfun(@(x) islogical(T.(x)), T.Properties.VariableNames));
for c = 1:length(logicalColumns)
T.(logicalColumns{c}) = double(T.(logicalColumns{c}));
end

在这里,我们获得包含逻辑值的列的名称,然后对这些列进行迭代,将它们设置为truefalse的两倍值10

相关内容

  • 没有找到相关文章

最新更新