A3.*_*.A3 2 arrays matlab matrix
假设:
X = [3 1 -1 -3];
Y = i.*X;
Run Code Online (Sandbox Code Playgroud)
从X和Y中获取矩阵QAM的最简单方法是什么:
QAM = [ 3+3i, 3+1i, 3-1i, 3-3i,
1+3i, 1+1i, 1-1i, 1-3i,
-1+3i,-1+1i,-1-1i,-1-3i,
-3+3i,-3+1i,-3-1i,-3-3i
]
Run Code Online (Sandbox Code Playgroud)
使用bsxfun当然 -
bsxfun(@plus,X(:),1i*X(:).')
Run Code Online (Sandbox Code Playgroud)
样品运行 -
>> X
X =
3 1 -1 -3
>> bsxfun(@plus,X(:),1i*X(:).')
ans =
3.0000 + 3.0000i 3.0000 + 1.0000i 3.0000 - 1.0000i 3.0000 - 3.0000i
1.0000 + 3.0000i 1.0000 + 1.0000i 1.0000 - 1.0000i 1.0000 - 3.0000i
-1.0000 + 3.0000i -1.0000 + 1.0000i -1.0000 - 1.0000i -1.0000 - 3.0000i
-3.0000 + 3.0000i -3.0000 + 1.0000i -3.0000 - 1.0000i -3.0000 - 3.0000i
Run Code Online (Sandbox Code Playgroud)
我会去Divakar的回答 ; 但另一种方法是使用ndgrid:
[ii, jj] = ndgrid(1:numel(X), 1:numel(Y));
QAM = X(ii)+Y(jj);
Run Code Online (Sandbox Code Playgroud)
这是一个更离奇的方法,利用列向量的矩阵乘积乘以行向量的事实生成所有组合:
QAM = log(exp(X(:))*exp(Y(:).'));
Run Code Online (Sandbox Code Playgroud)
最后,如果您有Communications Toolbox,您可以使用qammod:
QAM = qammod(flipud(reshape(0:15,4,4)).',16);
Run Code Online (Sandbox Code Playgroud)