MATLAB成对映射
我试图将(x,y)值映射到某些数字。这种情况可以通过如下示例进行解释:MATLAB成对映射,matlab,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中以更简单的方式实现这一点 我对这个问题的解决办法
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
r_1(r_1>2)=4;
r_1(r_1 0)=3;
r_1(r_1-2)=2;
r_1(r_12)=1;
r_2(r_2 0)=2;
r_2(r_2-2)=3;
r_2(r_2这看起来像16进制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 bin映射到符号值是任意的。如果您想匹配当前生成的任何对象,您可能需要将r_1或r_2进行转换,例如使用4-r_1
来“反转”映射。我还将通过将4拉出到参数中来概括这一点。映射过程中有任何模式吗?即x(1)映射到y(1)和y(2)还是什么?我把我的映射描述为(-3,3)=1…例如x(1)=-3和y(1)=1,我想把(-3,1)映射到1不清楚这个映射是如何工作的,是基于公式的吗?我看不到这里的模式。括号中的值是(x,y)吗?如果映射有一种方法或模式,那么它可以自动进行,如果您只是选择随机值,那么如果您只是执行类似于[-3,3,1;…-3,-3-4]的操作,并将向量(:,3)作为结果向量进行索引可能会更容易。(:,1:2)作为您的参考点,请查看unique
,特别是unique
的第二个参数,如果您只想将不同的对映射到不同的值。问题是,它非常不清楚。如果映射向量是z
,则z=f(x,y)
。您没有指定任何管理f
的规则,这就是问题不清楚的原因。例如,为什么不能将(-3,-1)
映射到1
?是否可以在算法中使用灰色?我不理解您的问题。“使用灰色”是什么意思是?我试着说灰色编码你有x和y维度的箱子索引,以及按列主顺序分配的组合符号索引(0-15)。你可以通过一个简单的查找表将这些符号映射到任何其他符号。