@Pholish
Front-end dev.

Почему не суммируются элементы массивов?

есть два массива PP1 и PP2 , они инициализированны в цикле, одно из значений в цикле изменяется с каждой итерацией - PP1.
Почему на выходе (массив PP) , сумма этих двух массивов (PP1 и PP2) равна только PP2.
P.S. Массивы обьявлены до цикла и инициализированны как пустые , оба. Массив PP1 с каждой итерацией принимает 16 разных значений , PP2 с каждой итерацией принимает одно и то же значение (const).
Сделал я так что бы брать 1 элемент с первого массива и суммировать его с 1 элементов второго массива.
PP(i)=PP1(i)+PP2(i)
Листинг кода:

clc;
clear all;
r= 150;
a= 0.8;
b= 1.5;
N= 4;
n= 15;
re= 150+15;
p = 10^4;
f= 10^9;
R= 8500;
c= 3.8*10^8;
n0= 5:1:20;

C= (factorial(2*N-1))/((factorial(N))*(factorial(N-1)));

t= (re*10^3*a/2*c)*((re/R)+2*a);

PP=[];
PP1=[];
PP2=[];
for i=1:1:length(n0)
    PP1(i)= (C/(2*n0(i))^N);
    PP2(i)= 10*C*((t*b/6)*(1+log(1+(1/2*pi*t*b^2)))^N);  
    PP(i)=PP1(i)+PP2(i); 
end

plot (PP);
grid on;
xlabel('сигнал/шум, n0') 
ylabel('Полная Вероятность Ошибки, Р(ош.N)')
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
C, t - константы
n0, PP1 - векторы
PP2 - константа, которую можно вынести за пределы цикла.

Вместо цикла for в Матлабе принято производить векторные операции в одной строке.
Для того чтобы каждый член вектора делить/возводить в степень, нужно добавить точку перед операцией:
PP1= (C ./ (2 * n0) .^ N)
Что тогда означает PP = PP1 + PP2, где PP2 - константа ? Непонятно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы