First I'd better find a mimo demo in matlab.
Introductioin to MIMO system
Step Analysis
- Generate data vector per frame
data = randi([0 P-1], frmLen, 1);
- Modulate data
modData = bpskMod(data);
- Alamouti Space-Time Block Encoder
encData = ostbcEnc(modData);
- Create the Rayleigh distributed channel response matrix for 2*2 antennas
H = zeros(frmLen, N, M);
H(1:N:end, :, :) = (randn(frmLen/2, N, M) + ...
1i*randn(frmLen/2, N, M))/sqrt(2);
% assume held constant for 2 symbol periods
H(2:N:end, :, :) = H(1:N:end, :, :); % I don't know why:(
其中,randn(a,b,c)
normally distributed number and a,b,c indicates the size of the matrix
- Extract part of H to represent the 1x1, 2x1 and 1x2 channels
H11 = H(:,1,1);
H21 = H(:,:,1)/sqrt(2); % 2*1 channel why /sqrt(2)
H12 = squeeze(H(:,1,:)); % 1*2 channel squeeze: same elements but with dimensions of length 1 removed
- Pass through the channels
chanOut11 = H11 .* modData; % for 1*1 channel no need to be encoded
chanOut21 = sum(H21.* encData, 2);
chanOut12 = H12 .* repmat(modData, 1, 2);
Question: how to set the channel and calculate the output?
- 4 channel , sum up
why sqrt2? what if I use rayleigh channel module?
Additional Gain
for 1:numPackets
every frame
Using loops to decrease the computation load
网友评论