Моделирование спутниковой передачи на MATLAB - PullRequest
0 голосов
/ 04 мая 2018

Я относительно новичок в MATLAB и самообучении. Я пытаюсь выполнить симуляцию спутниковой передачи и повторной передачи на Matlab через селективный повтор ARQ. Проблема с кодом в том. когда я ввожу длину последовательности данных и количество пакетов после запуска кода.

Я получаю сообщение об ошибке для строки 11: a = x (i, j); для определенных значений длины последовательности данных и количества пакетов.

И если я переключаю значения, я получаю сообщение об ошибке для строки 15: pac (i,:) = [x (i, :), p (i)];

Как я могу решить эту проблему получения ошибок из-за кода? когда через исследование я обнаружил, что это правильный путь для написания?

% program for protocol analysis
clc; close all;
n=input('Enter the data sequence length');
m=input('Enter the number of packets ');
x=randi(m,n);
% make packet

p=zeros(1,m);
for i=1:m
    for j=1:n
        a=x(i,j);
        b=p(i);
        p(i)=bitxor(a,b);
    end
   pac(i,:)=[x(i,:),p(i)];
   subplot(m,1,i); stem(pac(i,:));
end
xlabel('Transmitted Data,last bit is the parity bit');
% send first group of packets
% send packets
figure
ba=m/8;
for k=1:m
%     for l=1:8
%         g=l*k;
        data(k,:)=bsc(pac(k,:),.1);
        subplot(m,1,k); stem(data(k,:));
%     end

end
xlabel('Recieved Data,last bit is the parity bit');
figure

err = 1;
erf=1;

while (err~=0)
    do=data(:,n+1)';
    err=bitxor(p,do);
    stem(err);
    display(err);
    ('displaying retransmitted packets');

    for i=1:m
        if err(1,i)== 1
            display(err);
             ('error detected in packet no:');(i);

%             figure
            for j=i:m
                data(j,:)=bsc(pac(j,:),.1);

%                 subplot(m,1,j);stem(data(j,:));
            end

        end
        do=data(:,n+1)';
        err=bitxor(p,do);

    end
end
% figure
% for g=1:m
%     subplot(m,1,g);stem(data(g,:));
% end
% xlabel('Finally Received data after retransmission, last bit is the parity bit');

1 Ответ

0 голосов
/ 05 мая 2018

Кажется, что переменная x должна быть матрицей измерений m, умноженной на n. Функция

 x = randi(m,n);

однако создает квадратную матрицу измерений n раз n. То, что вы хотите, вероятно,

x = randi([minval maxval],m,n);

где вы вводите минимальные и максимальные значения, которые может иметь x,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...