Ошибка в цикле for в Matlab - PullRequest
0 голосов
/ 19 мая 2011

Я пытаюсь построить график из цикла for, и у меня это получается (в небольшой программе), но когда я пытаюсь использовать более крупную программу, я получаю следующую ошибку: "{Ошибка использования ==> полулогии Недостаточно входных аргументов. Ошибка в ==> test6 в 27 полулогии (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;

1 Ответ

3 голосов
/ 19 мая 2011

Проблема, вызывающая вашу ошибку, заключается в том, что 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 были равны нулю, через erfc).

Ваш код уже был векторизован, поэтому я избавился от циклов for.Обратите внимание, что у вас не будет n=n+1 в цикле for n=;увеличивается автоматически.

clc;
clear;
n=0:45;
q=55;
w=42;
r=228.6;
y=n+34+w-q-r;

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=10.^(0.1*z);
pe1=0.5*erfc(sqrt(g));
s=10.^(0.1*m);
pe2=0.5*erfc(sqrt(s));

semilogy(z,pe1,'b',m,pe2,'r');
xlabel('energy per bit per noise power spectral density (Eb/No) (dB) ');
ylabel('Bit error rate (Pe)');
legend('Bpsk','Qpsk');
grid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...