J'ai reçu l'onde sinusoïdale d'origine (Image 1) et une version bruyante de celui-ci aussi (Image 2).J'ai besoin de créer cette onde sinusoïdale dans MATLAB. Comment va-t-on?
image 1
image 2
Maintenant, pour trouver le signal original, je suis à la recherche à la fréquence dans la première moitié du graphique qui a la plus grande valeur. Ce serait 21. Lorsque j'essaie de créer une onde sinusoïdale avec 21 comme une fréquence en utilisant le code ci-dessous, je reçois le résultat de Image 3.
% Creating the Sine Wave
t = (1:1:256);
A = 1;
y = A*sin(2*pi*max_index*t);
plot(t,y);
image 3
Pourquoi est-ce le cas. Qu'est-ce que je fais mal?
CODE RUNNABLE
Voici ma fonction:
function [ ] = function1b(Sig_noise)
% Max Index is the frequency of the pure tone
noise_f = fft(Sig_noise);
s_nf = size(noise_f);
size_f = s_nf(2);
max = 0;
max_index = 1;
for n = 1:(size_f/2)
if abs(noise_f(n)) > max
max = abs(noise_f(n));
max_index = n;
end
end
% Creating the Sine Wave
t = (1:1:256);
A = 1;
y = A*sin(2*pi*max_index*t);
plot(t,y);
end
Et je l'appelle de cette partie du script:
load('Sig'); % Original Signal
Sig_noise2=awgn(Sig,10);
function1b(Sig_noise2);
Solution Andras'
Ceci est le résultat me semble être obtenir:
En utilisant linspace(0,2,100)
; me donne ce résultat:
Pouvez-vous envoyer un code exécutable? Pour moi cela semble correct, votre amplitude ne devrait pas changer, parce que A est constant, donc aucune idée pourquoi vous obtenez cette sortie. – lhcgeneva
@lhcgeneva vient de faire le changement! –