→ profyang: 暫時想不到不用for的作法= =" 03/30 00:10
→ celestialgod: 我沒用for,可是用的很複雜,看上面推文XD 03/30 00:12
→ celestialgod: 沒用過dec2bin,我試試看把我的code改用這個functio 03/30 00:14
→ profyang: 用for跟用cellfun不知道誰比較慢 代我試試 03/30 00:19
我的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];
A=repmat(A,100000,1);
tic;
B=cell(size(A,1),1); %主要是多這行 for loop有先宣告大小速度差很多
C=zeros(size(A,1),1);
for n=1:size(A,1)
B{n}=dec2bin(A(n,:)).';
C(n,:)=uint8(bin2dec(B{n}));
end
toc;
吐出來結果似乎是跟c大的一樣(當然我為了測速度把A變大100000倍)
實測下來好像for loop跟cellfun一樣慢XDDD
推 Lionel: 還有這招XD 03/30 00:22
→ Lionel: dec2bin(A(n,:)).' 後面的.'是轉置嗎 可是我實際上跑 03/30 00:28
→ Lionel: 好像沒差 03/30 00:28
→ profyang: 因為我試dec2bin(A(n,:))跑出來會是8*1的東西我覺得怪怪 03/30 00:30
※ 編輯: profyang (140.112.247.141), 03/30/2015 00:33:27
→ profyang: c大的code我也用新的(用dec2bin) 結果我電腦都大概20s 03/30 00:35
→ celestialgod: 我試的結果也是 03/30 00:46
→ celestialgod: 第二行可以改成auint8 = uint8(bin2dec(achar)); 03/30 00:53
→ celestialgod: 會快很多 03/30 00:53
→ celestialgod: 推錯篇...不過就是C(n,:)的迴圈不要跑,改成上面 03/30 00:54
找到不用for的了:
B=reshape(dec2bin(A),size(A,1),[]);
C=bin2dec(B);
※ 編輯: profyang (140.112.247.141), 03/30/2015 00:57:01
→ profyang: 根本神速= = 03/30 00:57
→ celestialgod: 果然樓上厲害!! 03/30 01:02
推 Lionel: 超神手 03/30 13:35