【问题标题】:Convert binary values to a decimal matrix将二进制值转换为十进制矩阵
【发布时间】:2016-03-06 14:35:26
【问题描述】:

假设我有一个矩阵 a= [1 3; 4 2],我使用以下代码将此矩阵转换为二进制格式:

a=magic(2)
y=dec2bin(a,8)
e=str2num(y(:))';

结果是:

  y =

00000001
00000100
00000011
00000010


e =

Columns 1 through 17

 0     0     0     0     0     0     0     0     0     0     0     0     0         0     0     0     0

Columns 18 through 32

 0     0     0     0     1     0     0     0     0     1     1     1     0        1     0

现在,当我想取回原始矩阵时,我会反转函数:

  s=num2str(e(:))';
  r=bin2dec(s)

我得到的结果是:

r =

    1082

我该怎么做才能得到原始矩阵?不是数字 提前谢谢你

【问题讨论】:

    标签: image matlab matrix binary


    【解决方案1】:

    您正在执行破坏原始结构的额外过程:

    a=magic(2)
    y=dec2bin(a,8)
    r=bin2dec(y)
    

    这里 r 是你的答案,因为 y 已经移除了 a 的矩阵结构。要重新创建矩阵,您需要:

    originalmatrix = reshape(r,size(a))
    
    originalmatrix =
    
     1     3
     4     2
    

    【讨论】:

    • 感谢您的帮助,但您的回答给了我不同位置的矩阵值。原始矩阵 'a=[1 3;4 2]' 但如果你注意到函数 'vect2mat' 会改变 3 和 4 的位置
    • 完全没有注意到它:D 你的重塑方法是正确的方法。我也更正了我的解决方案。
    【解决方案2】:

    我终于为我的问题找到了正确的解决方案,我想分享它以防万一有人需要它:

    a_back=reshape(bin2dec(num2str(reshape(e, 4, []))), 2, 2)
    
    a =
    
     1     3
     4     2
    

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 2020-04-21
      • 1970-01-01
      • 2017-07-15
      • 2019-05-02
      • 2015-06-01
      • 1970-01-01
      • 2022-01-23
      • 2012-06-26
      相关资源
      最近更新 更多