Re: [心得] 资料型态 转存方法

楼主: profyang (prof)   2015-03-30 00:09:29
※ 引述《Lionel (跟快乐交往)》之铭言:
: 大家好 大家晚安
: 假设我有以下资料
: 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 1
: 1 0 0 0 0 0 0 0
: 以上为 (i,j)值仅有{0,1}
: 3*8的double型态
: 想要的到
: 00000000
: 00000001
: 10000000
: 欲得
: 把(i,1)到(i,8)抓起来在一起
: 3*1的uint8
: 3*1的char
: 我知道uint8()跟char()的function
: 可是 转出来依旧还是3*8矩阵
: 感谢大家
如原文底下推文你的3*1 char是不可能的 因为你字的长度就是>1
底下是接近的code:
A=[0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 1;
1 0 0 0 0 0 0 0];
C=zeros(size(A,1),1);
for n=1:size(A,1)
B(n,:)=dec2bin(A(n,:)).';
C(n,:)=uint8(bin2dec(B(n,:)));
end
B会是3*8的char
(如果你直接用char转出来不会是你原来01这些字符 是他ASCII code对应字符)
C就是3*1的矩阵[0;1;128]
楼主: profyang (prof)   2015-03-30 00:10:00
暂时想不到不用for的作法= ="
作者: celestialgod (天)   2015-03-30 00:12:00
我没用for,可是用的很复杂,看上面推文XD没用过dec2bin,我试试看把我的code改用这个functio
楼主: profyang (prof)   2015-03-30 00:19:00
用for跟用cellfun不知道谁比较慢 代我试试
作者: Lionel (祝福与成全)   2015-03-30 00:22:00
还有这招XDdec2bin(A(n,:)).' 后面的.'是转置吗 可是我实际上跑好像没差
楼主: profyang (prof)   2015-03-30 00:30:00
因为我试dec2bin(A(n,:))跑出来会是8*1的东西我觉得怪怪c大的code我也用新的(用dec2bin) 结果我电脑都大概20s
作者: celestialgod (天)   2015-03-30 00:46:00
我试的结果也是第二行可以改成auint8 = uint8(bin2dec(achar));会快很多推错篇...不过就是C(n,:)的循环不要跑,改成上面
楼主: profyang (prof)   2015-03-30 00:57:00
根本神速= =
作者: celestialgod (天)   2015-03-30 01:02:00
果然楼上厉害!!
作者: Lionel (祝福与成全)   2015-03-30 13:35:00
超神手

Links booklink

Contact Us: admin [ a t ] ucptt.com