我对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');
答案 0 :(得分:0)
似乎变量x意图是维数m乘以n的矩阵。 功能
x = randi(m,n);
然而,创建了n次n的方阵。 你想要的可能是
x = randi([minval maxval],m,n);
您填写x可能具有的最小值和最大值