MATLAB上卫星传输仿真

时间:2018-05-04 05:51:08

标签: matlab

我对MATLAB和自学习相对较新。我试图通过选择性重复ARQ在Matlab上完成卫星传输和重传的模拟。代码的问题在于。当我输入数据序列长度和运行代码后的数据包数。

我收到第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 :(得分:0)

似乎变量x意图是维数m乘以n的矩阵。 功能

 x = randi(m,n);
然而,

创建了n次n的方阵。 你想要的可能是

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

您填写x可能具有的最小值和最大值