I am getting the error as:
??? Error using ==> vertcat Out of memory. Type HELP MEMORY for your options.
this is a code in 2*2 mimo in qpsk .
N = 1000000; % number of bits or symbols
Eb_N0_dB = [0:25]; % multiple Eb/N0 values
nTx = 2;nRx = 2;for ii = 1:length(Eb_N0_dB) % Transmitter
ip = (rand(1,N)>0.5) + j*(rand(1,N)>0.5); % generating 0,1 with equal probability
s = 2*ip-(1+j); sMod = kron(s,ones(nRx,1)); %
sMod = reshape(sMod,[nRx,nTx,N/nTx]); % grouping in [nRx,nTx,N/NTx ] matrix
h = 1/sqrt(2)*[randn(nRx,nTx,N/nTx) + j*randn(nRx,nTx,N/nTx)]; % Rayleigh channel
n = 1/sqrt(2)*[randn(nRx,N/nTx) + j*randn(nRx,N/nTx)]; % white gaussian noise, 0dB variance
% Channel and noise Noise addition
y = squeeze(sum(h.*sMod,2)) + 10^(-Eb_N0_dB(ii)/20)*n; % Maximum Likelihood Receiver
% ----------------------------
% if [s1 s2 ] = [-1-1, -1-1]
sHat1 = [-1-j -1-j]; sHat1 = repmat(sHat1,[1 N/2]); sHat1Mod = kron(sHat1,ones(nRx,1)); sHat1Mod = reshape(sHat1Mod,[nRx,nTx,N/nTx]); zHat1 = squeeze(sum(h.*sHat1Mod,2)) ; J1 = sum(abs(y - zHat1),1); % if [s1 s2 ] = [-1 -1 -1 1]
sHat2 = [-1-j -1+j]; sHat2 = repmat(sHat2,[1 N/2]); sHat2Mod = kron(sHat2,ones(nRx,1)); sHat2Mod = reshape(sHat2Mod,[nRx,nTx,N/nTx]); zHat2 = squeeze(sum(h.*sHat2Mod,2)) ; J2 = sum(abs(y - zHat2),1); % if [s1 s2 ] = [-1 -1 1 -1]
sHat3 = [-1-j 1-j]; sHat3 = repmat(sHat3,[1 N/2]); sHat3Mod = kron(sHat3,ones(nRx,1)); sHat3Mod = reshape(sHat3Mod,[nRx,nTx,N/nTx]); zHat3 = squeeze(sum(h.*sHat3Mod,2)) ; J3 = sum(abs(y - zHat3),1); % if [s1 s2] = [-1 -1 1 1]
sHat4 = [-1-j 1+j]; sHat4 = repmat(sHat4,[1 N/2]); sHat4Mod = kron(sHat4,ones(nRx,1)); sHat4Mod = reshape(sHat4Mod,[nRx,nTx,N/nTx]); zHat4 = squeeze(sum(h.*sHat4Mod,2)) ; J4 = sum(abs(y - zHat4),1); % if [s1 s2 ] = [-1 1 -1 -1]
sHat5 = [-1+j -1-j]; sHat5 = repmat(sHat5,[1 N/2]); sHat5Mod = kron(sHat5,ones(nRx,1)); sHat5Mod = reshape(sHat5Mod,[nRx,nTx,N/nTx]); zHat5 = squeeze(sum(h.*sHat5Mod,2)) ; J5 = sum(abs(y - zHat5),1); % if [s1 s2] = [-1 1 -1 1]
sHat6 = [-1+j -1+j]; sHat6 = repmat(sHat6,[1 N/2]); sHat6Mod = kron(sHat6,ones(nRx,1)); sHat6Mod = reshape(sHat6Mod,[nRx,nTx,N/nTx]); zHat6 = squeeze(sum(h.*sHat6Mod,2)) ; J6 = sum(abs(y - zHat6),1); % if [s1 s2 ] = [-1 1 1 -1]
sHat7 = [-1+j 1-j]; sHat7 = repmat(sHat7,[1 N/2]); sHat7Mod = kron(sHat7,ones(nRx,1)); sHat7Mod = reshape(sHat7Mod,[nRx,nTx,N/nTx]); zHat7 = squeeze(sum(h.*sHat7Mod,2)) ; J7 = sum(abs(y - zHat7),1); % if [s1 s2] = [-1 1 1 1]
sHat8 = [-1+j 1+j]; sHat8 = repmat(sHat8,[1 N/2]); sHat8Mod = kron(sHat8,ones(nRx,1)); sHat8Mod = reshape(sHat8Mod,[nRx,nTx,N/nTx]); zHat8 = squeeze(sum(h.*sHat8Mod,2)) ; J8 = sum(abs(y - zHat8),1); % if [s1 s2 ] = [1 -1 -1 -1]
sHat9 = [1-j -1-j]; sHat9 = repmat(sHat9,[1 N/2]); sHat9Mod = kron(sHat9,ones(nRx,1)); sHat9Mod = reshape(sHat9Mod,[nRx,nTx,N/nTx]); zHat9 = squeeze(sum(h.*sHat9Mod,2)) ; J9 = sum(abs(y - zHat9),1); % if [s1 s2 ] = [1 -1 -1 1]
sHat10 = [1-j -1+j]; sHat10 = repmat(sHat10,[1 N/2]); sHat10Mod = kron(sHat10,ones(nRx,1)); sHat10Mod = reshape(sHat10Mod,[nRx,nTx,N/nTx]); zHat10 = squeeze(sum(h.*sHat10Mod,2)) ; J10 = sum(abs(y - zHat10),1); % if [s1 s2] = [1 -1 1 -1]
sHat11 = [1-j 1-j]; sHat11 = repmat(sHat11,[1 N/2]); sHat11Mod = kron(sHat11,ones(nRx,1)); sHat11Mod = reshape(sHat11Mod,[nRx,nTx,N/nTx]); zHat11 = squeeze(sum(h.*sHat11Mod,2)) ; J11 = sum(abs(y - zHat11),1); % if [s1 s2 ] = [1 -1 1 1]
sHat12 = [1-j 1+j]; sHat12 = repmat(sHat12,[1 N/2]); sHat12Mod = kron(sHat12,ones(nRx,1)); sHat12Mod = reshape(sHat12Mod,[nRx,nTx,N/nTx]); zHat12 = squeeze(sum(h.*sHat12Mod,2)) ; J12 = sum(abs(y - zHat12),1); % if [s1 s2 ] = [1 1 -1 -1]
sHat13 = [1+j -1-j]; sHat13 = repmat(sHat13,[1 N/2]); sHat13Mod = kron(sHat13,ones(nRx,1)); sHat13Mod = reshape(sHat13Mod,[nRx,nTx,N/nTx]); zHat13 = squeeze(sum(h.*sHat13Mod,2)) ; J13 = sum(abs(y - zHat13),1); % if [s1 s2 ] = [1 1 -1 1]
sHat14 = [1+j -1+j]; sHat14 = repmat(sHat14,[1 N/2]); sHat14Mod = kron(sHat14,ones(nRx,1)); sHat14Mod = reshape(sHat14Mod,[nRx,nTx,N/nTx]); zHat14 = squeeze(sum(h.*sHat14Mod,2)) ; J14 = sum(abs(y - zHat14),1); % if [s1 s2 ] = [1 1 1 -1]
sHat15 = [1+j 1-j]; sHat15 = repmat(sHat15,[1 N/2]); sHat15Mod = kron(sHat15,ones(nRx,1)); sHat15Mod = reshape(sHat15Mod,[nRx,nTx,N/nTx]); zHat15 = squeeze(sum(h.*sHat15Mod,2)) ; J15 = sum(abs(y - zHat15),1); % if [s1 s2 ] = [1 1 1 1]
sHat16 = [1+j 1+j]; sHat16 = repmat(sHat16,[1 N/2]); sHat16Mod = kron(sHat16,ones(nRx,1)); sHat16Mod = reshape(sHat16Mod,[nRx,nTx,N/nTx]); zHat16 = squeeze(sum(h.*sHat16Mod,2)) ; J16 = sum(abs(y - zHat16),1); % finding the minimum from the four alphabet combinations
rVec = [J1;J2;J3;J4;J5;J6;J7;J8;J9;J10;J11;J12;J13;J14;J15;J16]; [jj dd] = min(rVec,[],1); % mapping the minima to bits
ref = [['00' '00']; ['00' '01']; ['00' '10']; ['00' '11']; ['01' '00']; ['01' '01']; ['01' '10']; ['01' '11']; ['10' '00']; ['10' '01']; ['10' '10']; ['10' '11']; ['11' '00']; ['11' '01']; ['11' '10']; ['11' '11']]; ipHat = zeros(1,N); ipHat(1:2:end) = ref(dd,1); ipHat(2:2:end) = ref(dd,2); % counting the errors
nErr(ii) = size(find([ip - ipHat]),2);endsimBer = nErr/N; % simulated ber
% EbN0Lin = 10.^(Eb_N0_dB/10);
% theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5));
% p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2);
% theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p));
close allfiguresemilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2) ; hold on ;axis([0 25 10^-5 1]);title( 'BER for QPSK modulation with 2x2 MIMO and ML equalizer (Rayleigh channel)' );grid on;legend('sim (nTx=2, nRx=2, ML)');xlabel('Average Eb/No,dB');ylabel('Bit Error Rate');
Best Answer