我尝试从for循环中绘图并且我成功(在小程序中)但是当我尝试使用更大的程序时,我收到以下错误: “{Error using ==> semilogy没有足够的输入参数。 ==>中的错误test6 at 27 semilogy(PE1, 'B',PE2, 'R');} 我不知道为什么 我希望有人可以看看并帮助我
我的代码是
clc;
clear;
for n=0:45;
n=n+1;
q=55;
w=42;
r=-228.6;
y(n+1)=n+34+w-q-r;
end
b=36;
o=0.2;
x=b/(1+o); % RB for Bpsk
k=2*b/(1+o); % Rb for Qpsk
z=y-x; % Eb/No for Bpsk
m=y-k; % Eb/No for Qpsk
g=0;
s=0;
pe1= zeros(1, 47);
pe2= zeros(1, 47);
for i=0:45;
g=10.^(0.1*z);
pe1=0.5*erfc(sqrt(g));
s=10.^(0.1*m);
pe2=0.5*erfc(sqrt(s));
end
semilogy(pe1,'b',pe2,'r');
xlabel('energy per bit per noise power spectral density (Eb/No) (dB) ');
ylabel('Bit error rate (Pe)');
legend('Bpsk','Qpsk');
grid;
答案 0 :(得分:3)
导致错误的问题是semilogy
(如plot
)期望输入格式semilogy(X1,Y1,'b',X2,Y2,'r')
,如果您想同时绘制多行。因此,您的semilogy
应为semilogy(z,pe1,'b',m,pe2,'r')
。您还需要z
调用中的m
和semilogy
来获得正确的x轴刻度。
您还有其他一些问题。我没有让它看起来像我做的那样,因为我希望你的代码可以识别。但您可能希望逐行比较您的代码。我做过的一件事可能是错误的是将r
更改为否定,因为否则y
从远到大(所以pe1
和pe2
为零,通过{{ 1}})。
你的代码已经被矢量化了,所以我摆脱了for循环。请注意,erfc
循环中没有n=n+1
;它会自动递增。
for n=