How to express or write short integers in MATLAB?
13 ビュー (過去 30 日間)
古いコメントを表示
Hi there, I am replicating some lines of code from C language in MATLAB evironment. Although I have completed the code but I am still getting some issues therefore, I am having some issue in the generated DATA.
Kindly if someone tell me how to properly use short in MATLAB as shown in the following picture
Here is what I am currently doing in my code
i_acc = bitshift(int16(i_acc+64),-7);
q_acc = bitshift(int16(q_acc+64),-7);
% % converting data
% i_acc = typecast(i_acc, 'int16');
% q_acc = typecast(q_acc, 'int16');
%
% Buffer
iq_buff(isamp*2)= i_acc;
iq_buff(isamp*2+1) = q_acc;
1 件のコメント
Bjorn Gustavsson
2022 年 6 月 14 日
You'll get more better help faster if you explain what "some issue" is.
回答 (1 件)
Arjun
2024 年 10 月 8 日
I see that you want to convert code from C language to MATLAB code.
In MATLAB, you can use int16 in the same way you use short in C code. In the converted code you provided, there are some dissimilarities with the C code. You have type-cast the values and then performed the bit operation, but in the original C code, the order of operations is different, which can result in inconsistent values.
Here is how you can correct it:
% Assuming i_acc and q_acc are previously defined integers
i_acc = bitshift(i_acc + 64, -7); % Equivalent to (i_acc + 64) >> 7
q_acc = bitshift(q_acc + 64, -7); % Equivalent to (q_acc + 64) >> 7
% Assuming iq_buff is a preallocated array and isamp is an index
iq_buff(isamp*2) = int16(i_acc); % Store as a 16-bit integer
iq_buff(isamp*2 + 1) = int16(q_acc); % Store as a 16-bit integer
Kindly go through the documentation of “int16” for better understanding: https://www.mathworks.com/help/releases/R2022a/matlab/ref/int16.html
I hope this helps!
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!