bitstream = zeros(nelem * B,1);
for i = 1:nelem
bitstream((i-1)*B+1:i*B) = fliplr(dec2binvec(decimal1(i),B));
end
Я думаю, что это должно быть правильно и намного быстрее (надеюсь, что это так :)).
редактирование:
Я думаю, что ваша главная проблема в том, что вы, вероятно, не выделяете матрицу bit_stream.
Я проверил оба кода на скорость и вижу, что ваш код быстрее моего (не очень), если мы оба предварительно распределили битовый поток, хотя я (вроде) векторизовал свой код.
Если мы НЕ выделяем битовый поток, мой код будет НАМНОГО быстрее. Это происходит потому, что ваш код перераспределяет матрицу чаще, чем мой.
Так что, если вы знаете B заранее, используйте свой код, иначе используйте мой (конечно, оба должны быть немного изменены, чтобы определить длину во время выполнения, что не проблема, так как dec2binvec может быть вызван без параметра B ).