Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB成对映射_Matlab - Fatal编程技术网

MATLAB成对映射

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,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
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)。你可以通过一个简单的查找表将这些符号映射到任何其他符号。