C Структура, подобная переменным в MATLAB

Что я хочу сделать, так это иметь Q - 10 бит и C - 4 бит и выполнить операцию -

Q,C = Q,C << 1 (сдвиг влево MSB C в LSB Q)

Где Q, C - это 14-битная структура, обработанная как структура в C. Это изначально поддерживается в verilog, может быть достигнуто со структурами в C. Как мне сделать что-то подобное в MATLAB?


person Lord Loh.    schedule 12.09.2012    source источник
comment
Старший бит Q теряется во время операции или Q становится 11-битным?   -  person slayton    schedule 13.09.2012
comment
В алгоритме, который я реализую, он становится 11-битным, но я не против, если он пока потерян. Я всегда мог сделать это дольше.   -  person Lord Loh.    schedule 13.09.2012


Ответы (1)


Я не думаю, что Matlab поддерживает союзы в стиле c. У него есть функция bitshift, которая позволяет решить эту задачу с помощью арифметики.

% Q is 10 bits, C is 4 bits
% Create QC. 
QC = bitshift(Q, 4) + C;  

% Bit shift QC by 1
QC = bitshift(QC,1);

%Grab QC bits 13->4 and save as Q
Q = bitshift(QC, -4);

%get QC bits 3->0 and save as C
C = bitand(QC, 2^(4+1)-1);
person slayton    schedule 13.09.2012
comment
Спасибо. Это должно сделать работу. Я предполагаю, что мои мысли были упакованы из-за отсутствия структур. - person Lord Loh.; 13.09.2012