0
16ビット/ピクセルの画像ファイルがあります。 Matlabを使って、各要素がビット2〜10だけを含む別の配列を生成したい。私はforループでそれをすることができますが、遅すぎます:Matlabでループのない配列の各要素をビットシフトします
if mod(j,2) ~= 0
image1(i,j) = bitshift(image(i,j),-2); % shift the LL bits to the left
else
tmp = bitand(image(i,j),3); % save off the lower 2 bits 00000011
adder = bitshift(tmp,6); % shift to new positions in LL
image1(i,j) = bitshift(image(i,j),-2); % shift the UL bits to the right
image1(i,j-1) = bitor(image1(i,j-1),adder); add in the bits from the UL
end
次のような方法がありますか?
image1(:,1:2:end) = bitshift(image(:,1:2:end),-2);
etc
投稿した方法で試しましたか? 'bitshift'と関連する関数はすべて多次元入力を受け入れます。 – Suever
はい、エラーは「添え字付きのディメンションの不一致」です。 – user7236719
'image1'が適切なサイズであることを確認するために' image1 = image'を呼び出す前にそれを試しましたか? – Suever