i am facing this error in simulation . "" Error using * Inner matrix dimensions must agree. Error in Untitled77777 (line 65) decBits = step(pskDemodulator,v * H' * r1);"""" please help me to solve it .

1 view (last 30 days)
N = 2; % Number of transmit antennas
M = 2; % Number of receive antennas
EbNoVec = 2:3:8; % Eb/No in dB
modOrd = 4; % constellation size = 2^modOrd
% Create a local random stream to be used by random number generators for
% repeatability.
stream = RandStream('mt19937ar');
% Create PSK modulator and demodulator System objects
pskModulator = comm.PSKModulator(...
'ModulationOrder', 2^modOrd, ...
'PhaseOffset', 0, ...
'BitInput', true);
pskDemodulator = comm.PSKDemodulator( ...
'ModulationOrder', 2^modOrd, ...
'PhaseOffset', 0, ...
'BitOutput', true);
% Loop over selected EbNo points
for idx = 1:length(EbNoVec)
% Calculate SNR from EbNo for each independent transmission link
snrIndB = EbNoVec(idx) + 10*log10(modOrd);
snrLinear = 10^(0.1*snrIndB);
% Create random bit vector to modulate
msg = randi(stream, [0 1], [N*modOrd, 1]);
% Modulate data
txSig1 = step(pskModulator,msg);
xF1 = zeros(size(txSig1));
txSig22 = (idwt(txSig1,xF1,'haar')).';
txSig = reshape(txSig22,[2,2]);
% txSig = idct(txSig1);
% Flat Rayleigh fading channel with independent links
rayleighChan = (randn(stream, M, N) + 1i*randn(stream, M, N))/sqrt(2);
% Add noise to faded data
rxSig1 = awgn(rayleighChan*txSig, snrIndB, 0, stream);
rxSig = dwt(rxSig1,'haar');
% rxSig = dct(rxSig1);
% ZF-SIC receiver
r = rxSig;
H = rayleighChan; % Assume perfect channel estimation
% Initialization
estZF = zeros(N*modOrd, 1);
orderVec = 1:N;
k = N+1;
% Start ZF nulling loop
for n = 1:N
% Shrink H to remove the effect of the last decoded symbol
H = H(:, [1:k-1,k+1:end]);
% Shrink order vector correspondingly
orderVec = orderVec(1, [1:k-1,k+1:end]);
% Select the next symbol to be decoded
G = (H'*H) \ eye(N-n+1); % Same as inv(H'*H), but faster
size(G)
[~, k] = min(diag(G));
symNum = orderVec(k);
v = G(k,:)';
size(v)
% Hard decode the selected symbol
size(H)
size(r)
% size(G(k,:)
decBits = step(pskDemodulator,v * H' * r);
estZF(modOrd * (symNum-1) + (1:modOrd)) = decBits;
% Subtract the effect of the last decoded symbol from r
if n < N
r = r - H(:, k) * step(pskModulator,decBits);
end
end
end

Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!