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) )
类别
在 帮助中心 和 File Exchange 中查找有关 Communications Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!