J'utilise la transformation en ondelettes continue de Morlet. J'ai wscalogram
du signal et maintenant je veux tracer une amplitude de fréquence comme l'image suivante, mais je ne sais pas comment le faire:
J'ai utilisé la scal2freq
fonction MATLAB pour convertir des échelles en pseudo-fréquences. De plus, j'ai quelques fréquences dans mon signal qui ont un grand rapport d'amortissement (4%), donc elles ne sont pas bien visibles dans l'intrigue. Comment exagérer ces modes très amortis?
J'utilise MATLAB, voici mes codes:
% Import the text4.txt to matlab workspace. and save it under name "data"
t=linspace(0,30,301);
Fs=ceil(inv(t(2)-t(1)));
x=data(:,4); % use x=data(:,3),x=data(:,5) too. first column is time,second is refrence
wname = 'morl';
scales = 1:1:256;
coefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
surf(t,freq,abs(coefs));shading('interp');
axis tight; xlabel('Seconds'); ylabel('Pseudo-Frequency (Hz)');
axis([0 30 0 1 0 60])
xlabel('Time'); ylabel('Frequency');
figure;
sc=wscalogram('image',coefs,'scales',freq,'ydata',x);
hold on
Mon intrigue actuelle ressemble à ceci:
frequency-spectrum
frequency
wavelet
Électricien
la source
la source
Réponses:
Modifier un peu votre code, mais pas de changements majeurs, et j'obtiens des résultats corrects de toute façon. Utilisez ce code de modèle ici et vous ne devriez voir aucun problème. J'obtiens les bons résultats.
Pour obtenir le chiffre sur le côté droit de la première image que vous mettez en place, il s'agit simplement du spectre de tranche de temps. En d'autres termes, une colonne de votre matrice fréquence-temps.
Par exemple, nous pourrions obtenir la matrice de coefficients carrés suivante, en fréquence en fonction du temps:
Supposons alors que nous souhaitons regarder le spectre de la tranche de temps à la colonne 47. Ensuite, ceci est donné ici:
Ici, vous voyez alors la puissance des coefficients, en fonction de la fréquence, pour la tranche de temps correspondant à la colonne 47.
la source
La transformée en ondelettes continue (CWT) est une méthode d' analyse d'échelle de temps . Oui, vous l'avez lu correctement, l' échelle , pas la fréquence . Cependant, il est possible de faire correspondre les échelles aux fréquences, et même assez facilement. Puisque vous êtes un utilisateur MATLAB, vous souhaiterez probablement utiliser cette fonction , qui effectue les opérations suivantes:
Comme vous pouvez le lire, les fréquences ne sont pas les fréquences réelles du signal, mais des approximations. Si vous voulez les fréquences réelles, vous devez utiliser la transformée de Fourier à court terme (STFT).
Alors, quand doit-on utiliser le CWT? En règle générale, les ondelettes fonctionnent bien lorsque les signaux sont transitoires (c'est-à-dire qu'ils ont des changements rapides).
EDIT: haha, je ne sais pas ce que je fais ici. désolé: -D complètement manqué le point de votre question. Il suffit de lire le titre ....
la source
Je ne sais pas si vous avez encore besoin d'aide ...
Si vous voulez la fréquence par rapport à la magnitude, utilisez une commande "mesh / surf" pour tracer les coefficients.
Modifiez ensuite l'orientation de l'intrigue pour obtenir le résultat recherché. Pour cela, voir la commande "view".
la source