solicitando bucle [cerrado]

0

Quiero solicitar bucle. A continuación se muestra mi código. He aplicado el bucle for que está mal. Aquí Longitud (t) son números de muestra. Aquí quiero crear un bucle 'for' para una muestra número 5 en particular. Entonces, ¿cómo cambiar h en el bucle for. Además, 'phi_sync' debe ser el número de muestra de 5 y 'phi_acc' debe ser la suma de 0 a 5 números de muestra.

 fs = 200;
    ts = 1/fs;
    t = 0:ts:1-ts;
    fc = 50;
    S = cos(2*pi*fc*t);                    %%% equation 7.1 noisless
        sigma = 1.8;
    phi_sync =  sigma * randn(1,length(t));   %%%% random variable with gaussian distributed
    phi_acc = sigma * randn(1,length(t));   %%%% random variable with gaussian distributed
    % h = 0;

    for i=1:length(S)
        h = phi_sync + phi_acc(i);
    end

gracias por tus esfuerzos. Este es en realidad un algoritmo para agregar ruido de fase en una señal. después de eso quiero agregar h en la señal S, para obtener el ruido de fase. Sin embargo, cuando haga la nueva señal con S1 e intente analizar la señal en el dominio de la frecuencia. Su matriz muestra que muestra.

S1 = cos(2*pi*fc*t + h);
L = length(S1);
nfft = L*100;           %%%%%% Zero padding
res = fft(S1,nfft)/nfft;     % resize into nfft nr of element % normalize the amplitude
f = fs/2*linspace(0,1,nfft/2+1);
res = res(1:nfft/2+1);
figure, plot(f,abs(res));
% figure, plot(f,angle(res));
return
    
pregunta Urban_Yogi

2 respuestas

1

Sigue el código y los nuevos comentarios, todo está explicado:

fs = 200;
ts = 1/fs;
t = 0:ts:1-ts;
fc = 50;
S = cos(2*pi*fc*t);                    %%% equation 7.1 noisless
sigma = 1.8;

% the length of S and t is 200 sample
phi_sync =  sigma * randn(1,length(t)); 

% to get the 5th sample, 10th sample, 15th sample and so on
phi_sync=phi_sync(1:5:end)

%%%% random variable with gaussian distributed
phi_acc = sigma * randn(1,length(t));   %%%% random variable with gaussian distributed

% new array to get the summation
phi_acc_summ=[];
for i=1:5:length(phi_acc)
    summation=phi_acc(i)+phi_acc(i+1)+phi_acc(i+2)+phi_acc(i+3)+phi_acc(i+4);
    phi_acc_summ=[phi_acc_summ   summation];% append the new value
end

% both phi_sync and phi_acc_summ have 40 samples which is 200/5

% finaly to get the 5th sample you have to simply add 5 in the middle
% of the for loop sine
for i=1:5:length(S)
    h = phi_sync + phi_acc(i);
end
    
respondido por el Sabir Moglad
1

Podría usar una instrucción if para verificar si el bucle está en la quinta iteración es decir,

for i=1:length(S)

   h = phi_sync + phi_acc(i);
    if i==5
       #your code
    end  
end

Y en cuanto al acceso al número de muestra 5 se refiere al uso-

phi_sync (5)

y para la suma de elementos use-

suma (phi_acc)

    
respondido por el Amal Vincent

Lea otras preguntas en las etiquetas