在mat-lab中我有二进制10x10矩阵
我想将其转换为10x10十进制矩阵。我怎么能这样做?
编辑:r是10x10二进制矩阵。
答案 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()
。