MATLAB对映射

时间:2015-05-11 19:56:35

标签: matlab

我试图将(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

1 个答案:

答案 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输入参数来概括这一点。