如何在matlab中将二进制矩阵转换为十进制矩阵?

时间:2015-02-03 11:56:57

标签: matlab matrix

在mat-lab中我有二进制10x10矩阵print screen of mat-lab

我想将其转换为10x10十进制矩阵。我怎么能这样做?

编辑:r是10x10二进制矩阵。

1 个答案:

答案 0 :(得分:3)

根据您的快照,我们可以推断出您的 double 类型矩阵仅包含“1”和“0”作为值。

因此,我会像这样重现并解决你的情况:

>> r   = [11111010, 11111111; 1010101, 101]
result = cellfun(@(x) bin2dec(num2str(x)), num2cell(r))

r =

    11111010    11111111
     1010101         101


result =

   250   255
    85     5

或者,您不必使用cellfun(),您可以使用arrayfun()而无需将数组/矩阵转换为单元格数组,如下所示:

>> r   = [11111010, 11111111; 1010101, 101]
result = arrayfun(@(x) bin2dec(num2str(x)), r)

或者,如果我们假设您有 二进制 类型(逻辑)单元格数组,那么这可能是一个解决方案:

r      = {[1 1 1 1 1 0 1 0], [1 1 1 1 1 1 1 1]; [1 0 1 0 1 0 1], [1 0 1]}; %// Double type binary valued cell array
r      = cellfun(@(x) logical(x), r, 'UniformOutput', false);              %// You asserted binary type cell array is given
result = cell2mat(cellfun(@(x)( sum(pow2(length(x)-1:-1:0) .* x) ), r, 'UniformOutput', false));

使用过的内置函数:cellfun()bin2dec()num2str()num2cell()arrayfun()cell2mat()