2016-06-25 16 views
0
if strcmp(mappingtype,'u2') %Uniform 2 
    newMax = samples*(samples-1) + 3; 
    for i = 0:2^samples-1 
    j = bitset(bitshift(i,1,samples),1,bitget(i,samples)); 

プログラムを実行しようとしているときに、関数で次のエラーが発生しています。Matlabのビットシフトエラー2016a

bitshiftを使用したエラー ASSUMEDTYPEは整数型の名前でなければなりません。私がコメントしたよう

+0

ビットシフト(I、1、サンプル)を使用して、あなたの目的は何ですか?
bitshift(i,1,samples)使用を使用して bitshift()は通常2つの引数をとります。 bitshift()でi * 2 ^サンプルを計算しますか? – Jin

+0

3番目は想定されたタイプです...そのサンプルはサンプルとして与えられました... –

答えて

0

、ちょうど私が2 ^サンプルを取得するために、ビットシフト(I、サンプル)

あるいは、使用ビットシフト(1、サンプル)を使用して、2 ^サンプルを*コンピューティングのための2つの引数を使用します。

第3引数はデータ型を仮定するためのもので、 'int16'や 'int8'のように、計算用の変数ではないはずです。

+0

ビットシフトを2引数に変更すると、寸法誤差が発生します –

+0

./ マトリックスの寸法は一致している必要があります。 Action3D_LBP(行133)のエラー F_train = F_train./(repmat(sqrt(sum(F_train.*F_train))、[Dim、1]))); –

+0

サンプル自体を私に見せてもらえますか?行列の次元誤差はビットシフト1とは異なる誤差でなければならない。 bitshiftでエラーが発生した場合、bitshiftのエラーメッセージだけが表示されますが、bitshiftは他のエラーよりも上位であるため、他のエラーがあります。私は推測する。 – Jin

0

これは、Octaveコードであり、Matlabのコードでない限り。 Octaveのビットシフト演算子では、3つの引数が許されます。私はこれを試して、jのバイナリ表現が私のバイナリ表現の左回転であることが分かりました。

0

私は同じ問題を抱えていました。私はこれが古い質問であることを知っていますが、他の誰かが同様の質問をしている場合に私はここに投稿しています。 これは、Matlabが3つの引数でビットシフト演算をサポートしなくなったためです。その代わりにbitand(bitshift(i,1),2^samples-1)

reference- https://www.reddit.com/r/matlab/comments/1ttat5/help_me_with_bitshifting_and_bit_truncation/