Using for loop to access two elements from array

I am trying to convert an array of bit values into complex values. For every two elements the first is designated as the real part and the second as the imaginary part. I am confused how to access the current index and the next index without exceeding the number of array elements.
str='abc';
str_dec=double(str); %converts to decimal
str_bin=dec2bin(str_dec,8) %converts string from decimal to binary
bits=reshape(str_bin.',1,8*length(str))
QPSK = [];
%grab every two elements from bits to convert to QPSK
for i = length(bits)
%convert bits to complex values
if bits(i) > 1
if bits(i+1) > 1
QPSK = [QPSK, 1+1j];
else
QPSK = [QPSK, 1-1j];
end
else
if bits(i+1) > 1
QPSK = [QPSK, -1+1j];
else
QPSK = [QPSK, -1-1j];
end
end
end
QPSK

回答(1 个)

Forget the loop. It's a four-line operation:
str='abc';
bits=reshape( dec2bin(str,8).' ,1,[]) -'0'; %converts string from decimal to binary
parts=2*bits-1;
QPSK=complex( parts(1:2:end) , parts(2:2:end) )
QPSK =
-1.0000 + 1.0000i 1.0000 - 1.0000i -1.0000 - 1.0000i -1.0000 + 1.0000i -1.0000 + 1.0000i 1.0000 - 1.0000i -1.0000 - 1.0000i 1.0000 - 1.0000i -1.0000 + 1.0000i 1.0000 - 1.0000i -1.0000 - 1.0000i 1.0000 + 1.0000i

类别

帮助中心File Exchange 中查找有关 Communications Toolbox 的更多信息

产品

版本

R2019a

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by