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