Estou executando a transformação de wavelet contínua de Morlet. Eu tenho wscalogram
sinal e agora quero plotar a magnitude da frequência como na figura a seguir., Mas não sei como fazê-lo:
Eu usei a scal2freq
função MATLAB para converter escalas em pseudo-frequências. Também tenho algumas frequências no meu sinal que têm uma grande taxa de amortecimento (4%), para que não sejam bem visíveis na plotagem. Como posso exagerar esses modos altamente amortecidos?
Estou usando o MATLAB, aqui estão meus códigos:
% 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
Meu enredo atual é assim:
frequency-spectrum
frequency
wavelet
Homem elétrico
fonte
fonte
Respostas:
Modificando seu código um pouco, mas sem grandes alterações, e eu recebo resultados corretos de qualquer maneira. Use este código de modelo aqui e você não verá nenhum problema. Eu obtenho os resultados corretos.
Para obter a figura no lado direito da primeira imagem exibida, esse é simplesmente o espectro da fatia de tempo. Em outras palavras, uma coluna da sua matriz de frequência e tempo.
Por exemplo, podemos obter a seguinte matriz de coeficiente quadrado, em frequência x tempo:
Suponhamos, então, que desejamos examinar o espectro para o intervalo de tempo na coluna 47. Então, isso é fornecido aqui:
Aqui, você vê o poder dos coeficientes, versus frequência, para o intervalo de tempo correspondente à coluna 47.
fonte
A transformada contínua de wavelets (CWT) é um método para análise de escala de tempo . Sim, você leu corretamente, escala , não frequência . No entanto, é possível mapear as escalas para frequências e até com bastante facilidade. Como você é um usuário do MATLAB, provavelmente desejará usar esta função , que faz o seguinte:
Como você pode ler, as frequências não são as freqüências reais no sinal, mas sim aproximações. Se você deseja frequências reais, deve usar a transformada de Fourier de curta duração (STFT).
Então, quando alguém deve usar o CWT? Como princípio geral, as wavelets funcionam bem quando os sinais são transitórios (ou seja, têm mudanças rápidas).
EDIT: haha, eu não sei o que estou fazendo aqui. desculpe :-D perdeu completamente o ponto de sua pergunta. Basta ler o título ....
fonte
Não tenho certeza se você ainda precisa de ajuda ...
Se você deseja frequência versus magnitude, use um comando "mesh / surf" para plotar os coeficientes.
Em seguida, altere a orientação do gráfico para obter o resultado que deseja. Para isso, consulte o comando "view".
fonte