我试图将(x,y)值映射到某些数字。这种情况可以用例如:
来解释x=[-3 -1 3 1 3 1 1];
y=[-1 -3 1 3 1 3 1];
(-3,3) => 1
(-3,1) => 2
(-3,-1) => 3
(-3,-3) => 4 ... There are 16 values like this and I know them.
所以,我想得到一个包含所有映射值的向量。
如何以更简单的方式在MATLAB中实现这一点?
我对此问题的解决方案如下:
r_1(r_1 >2) = 4;
r_1(r_1 <=2& r_1>0) = 3;
r_1(r_1 <=0& r_1>-2) = 2;
r_1(r_1 <=-2) = 1;
r_2(r_2>2) = 1;
r_2(r_2 <=2 & r_2 >0) = 2;
r_2(r_2 <=0 & r_2 >-2) = 3;
r_2(r_2 <=-2) = 4;
consellations = reshape(1:16,4,4);
ml_container = zeros(length(r_1),1);
for a = 1:length(r_1)
ml_container(a) = consellations(r_2(a),r_1(a));
end
是否有更好的方法可以摆脱&#34;对于&#34;?
r1对应于x
r2对应于y
答案 0 :(得分:2)
这看起来像16-ary QAM解调,不是吗?我会使用histc
将模拟值从I和Q(r1和r2)通道分离到它们的箱中,然后使用简单的乘法将它们组合成单个符号。
[n r_1]=histc(x, [-Inf -2 0 2 Inf]);
[n r_2]=histc(y, [-Inf -2 0 2 Inf]);
% r_1 and r_2 now contain the bin index in their dimensions
symbol = (r_1-1)*4 + (r_2-1); % 0-based symbol index
r_1和r_2区间到符号值的映射是任意的。如果您想匹配当前生成的任何内容,您可能需要转换r_1或r_2,例如使用4-r_1
转换为&#34;反转&#34;映射。我还会通过将4输入参数来概括这一点。