Mudanças entre as edições de "Usuário:Patricia.m"
Ir para navegação
Ir para pesquisar
(14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 87: | Linha 87: | ||
;4 de junho de 2012 | ;4 de junho de 2012 | ||
*não consegui ainda fazer o espectro! Tá dificil. | *não consegui ainda fazer o espectro! Tá dificil. | ||
+ | |||
+ | ;26 de junho de 2012 | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% | ||
+ | close all | ||
+ | %% | ||
+ | clear; clc; % limpa as variaveis, fecha e limpa a janela de comandos | ||
+ | [data,fs]=wavread('musica.wav'); % importando data e fs | ||
+ | largura_seg = 2^9; | ||
+ | nfig = 0; | ||
+ | % tipos de janela | ||
+ | tipo (10,:) = ' '; % inicializa os tipos com vazios | ||
+ | tipo(1,1:size('hamming',2)) = 'hamming'; | ||
+ | tipo(2,1:size('flattopwin',2)) = 'flattopwin'; | ||
+ | tipo(3,1:size('rectwin',2)) = 'rectwin'; | ||
+ | N_fig = 1; | ||
+ | |||
+ | %for nfig = 1:N_fig | ||
+ | nfig = 2; % Define a janela que será usada | ||
+ | % for segmento = [1:floor(size(data,1)/largura_seg)]; | ||
+ | segmento = 44; | ||
+ | x_n = data(1+(segmento-1)*largura_seg:segmento*largura_seg,1); % pegando apenas um canal | ||
+ | |||
+ | win=window(eval(['@' tipo(nfig,:)]),largura_seg); | ||
+ | x_w = x_n.*win; | ||
+ | t = 1/fs*[1:length(x_w)]; | ||
+ | N_0 = length(x_w); | ||
+ | X_r = (fft(x_w)/N_0); | ||
+ | X_rp = abs(X_r(1:N_0/2+1)); | ||
+ | f = linspace(0, fs/2, N_0/2+1)'; | ||
+ | figure1 = figure(1); | ||
+ | axes1 = axes('Parent',figure1,'Color',[0 0 0]); | ||
+ | subplot(212); | ||
+ | P_c(segmento,:) = X_rp; | ||
+ | %p = plot(f, 20*log10(X_rp)); set(p,'Color',[rand rand rand],'LineWidth',1); | ||
+ | plot(f, 20*log10(X_rp),'LineWidth',1,'Color',[0.87058824300766 0.490196079015732 0]); | ||
+ | xlabel('frequência (Hz)'); ylabel('amplitude (dB)'); axis tight; | ||
+ | xlim([0 fs/2]); | ||
+ | % xlim([600 1000]); % para ver melhor | ||
+ | |||
+ | % end | ||
+ | %end | ||
+ | % o espectro é feito aqui: | ||
+ | subplot(211); | ||
+ | %x_n = data(:,1); % pegando apenas um canal | ||
+ | %[S,F,T,P] = spectrogram(x_n,largura_seg,round(largura_seg*0.9),largura_seg,fs); | ||
+ | %colorbar('location','southoutside'); | ||
+ | % usa sempre a janela de Hamming (padrão) | ||
+ | %S_mod = abs(P); | ||
+ | x_n = data(:,1); | ||
+ | cTF = 1024; | ||
+ | x_n_z = cat(1,x_n,zeros(ceil(length(x_n)/cTF)*cTF-length(x_n),1)); | ||
+ | XN_z =reshape(x_n_z,cTF, length(x_n_z)/cTF); | ||
+ | x_n_z = fft(XN_z,cTF,1); | ||
+ | Y = abs(x_n_z); | ||
+ | surf(Y(1:52,:)); | ||
+ | %surf(F,T,10*log10(P'),'edgecolor','none'); axis tight; | ||
+ | %view(0,90); | ||
+ | xlabel('frequência (Hz)'); ylabel('tempo'); zlabel('amplitude(dB)');axis tight; | ||
+ | %plot(F,S_mod(1:(largura_seg/2+1),segmento)); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Com essa alteração no código o espectro é mostrado da seguinte maneira: | ||
+ | |||
+ | [[Arquivo:surf.jpg]] | ||
+ | |||
+ | |||
+ | ; julho de 2012 | ||
+ | *Escrevendo o artigo | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | x_w = x_n.*win; | ||
+ | t = 1/fs*[1:length(x_w)]; | ||
+ | N_0 = length(x_w); | ||
+ | X_r = (fft(x_w)/N_0); | ||
+ | </syntaxhighlight> | ||
==Dúvidas que surgiram== | ==Dúvidas que surgiram== | ||
− | + | ||
− | + | ||
+ | Comecei a escrever o artigo, já que não sei o que devo fazer agora e falta pouco para acabar. | ||
+ | |||
+ | |||
+ | |||
+ | ==23 de agosto de 2012== | ||
+ | |||
+ | Artigo enviado ao professor. | ||
==Links de auxílio== | ==Links de auxílio== |
Edição atual tal como às 13h54min de 5 de dezembro de 2012
Projeto DSA
Atividades a desenvolver
- Unificar o gráfico do espectro de frequencias com o spectrograma
- Incluir os dois no mesmo plot (2subplots)
- Usar escala em dB.
- Gerar o espectrograma a partir da FFT
- Variar o tipo de janela usada (Hamming, etc)
Atividades desenvolvidas
- 9 de maio de 2012
- 10 de maio de 2012
- tentativas de criar o espectro a partir das FFTs
- 11 de maio de 2012
- ainda tentativas de criar o espectro a partir das FFTs
- 14 de maio de 2012
- consegui sobrepor as FFTs, mas de novo uma sobre a outra e não do lado como é o nosso objetivo
Indique os códigos matlab que você modificou/ entre <syntaxhighlight lang=matlab> .... </syntaxhighlight>. Veja exemplo abaixo. --Marcos Moecke
%-- 16/12/11 15:48 --%
clear all;clf;clc;
n = (-2:10);
y = [1;1;zeros(length(n)-2,1)];
figure(3);
stem(n,ynull,'k');
xlabel('n');
ylabel('ynull[n]');
Na próxima vez eu coloco, como não deu certo, eu voltei para o programa original sem guardar as alterações feitas.
- 15 de maio de 2012
- HELP da função spectrogram
- 16 de maio de 2012
- Procurando uma maneira de criar o espectro.
- Entendendo a função spectrogram para tentar implementar o espectro a partir das FFTs.
- 17 de maio de 2012
Em aula o dia inteiro.
- 18 de maio de 2012
Sem conexão com o servidor
- 21 de maio de 2012
- Gráfico unificado:
Era desse jeito que era pra ficar? A escala do primeiro é tempo, não amplitude.
- 22 de maio de 2012
- 23 de maio de 2012
%figure(2)
subplot(211);
x_n = data(:,1); % pegando apenas um canal
[S,F,T,P] = surf(F,T,10*log10(P'),'edgecolor','none'); axis tight;
%spectrogram(x_n,largura_seg,round(largura_seg*0.9),largura_seg,fs);
colorbar('location','southoutside');
% usa sempre a janela de Hamming (padrão)
S_mod = abs(P);
view(0,90);
xlabel('frequência (Hz)'); ylabel('tempo'); zlabel('amplitude(dB)');axis tight;
Tentei assim e de outros jeitos parecidos, mas não deu certo. Acho que não dá pra usar aquele vetor [S,F,T,P] sem igualar a função spectrogram.
- 24 de maio de 2012
- Fazendo relatório trimestral -> entrega até 27/05.
- 25 de maio de 2012
- Minha parte do relatório feita e encaminhada ao professor.
- 28 de maio de 2012
- Ainda não consegui montar o espectro usando as FFTs.
- 29 e 30 de maio de 2012
Apresentação do poster no Fórum.
- 4 de junho de 2012
- não consegui ainda fazer o espectro! Tá dificil.
- 26 de junho de 2012
%%
close all
%%
clear; clc; % limpa as variaveis, fecha e limpa a janela de comandos
[data,fs]=wavread('musica.wav'); % importando data e fs
largura_seg = 2^9;
nfig = 0;
% tipos de janela
tipo (10,:) = ' '; % inicializa os tipos com vazios
tipo(1,1:size('hamming',2)) = 'hamming';
tipo(2,1:size('flattopwin',2)) = 'flattopwin';
tipo(3,1:size('rectwin',2)) = 'rectwin';
N_fig = 1;
%for nfig = 1:N_fig
nfig = 2; % Define a janela que será usada
% for segmento = [1:floor(size(data,1)/largura_seg)];
segmento = 44;
x_n = data(1+(segmento-1)*largura_seg:segmento*largura_seg,1); % pegando apenas um canal
win=window(eval(['@' tipo(nfig,:)]),largura_seg);
x_w = x_n.*win;
t = 1/fs*[1:length(x_w)];
N_0 = length(x_w);
X_r = (fft(x_w)/N_0);
X_rp = abs(X_r(1:N_0/2+1));
f = linspace(0, fs/2, N_0/2+1)';
figure1 = figure(1);
axes1 = axes('Parent',figure1,'Color',[0 0 0]);
subplot(212);
P_c(segmento,:) = X_rp;
%p = plot(f, 20*log10(X_rp)); set(p,'Color',[rand rand rand],'LineWidth',1);
plot(f, 20*log10(X_rp),'LineWidth',1,'Color',[0.87058824300766 0.490196079015732 0]);
xlabel('frequência (Hz)'); ylabel('amplitude (dB)'); axis tight;
xlim([0 fs/2]);
% xlim([600 1000]); % para ver melhor
% end
%end
% o espectro é feito aqui:
subplot(211);
%x_n = data(:,1); % pegando apenas um canal
%[S,F,T,P] = spectrogram(x_n,largura_seg,round(largura_seg*0.9),largura_seg,fs);
%colorbar('location','southoutside');
% usa sempre a janela de Hamming (padrão)
%S_mod = abs(P);
x_n = data(:,1);
cTF = 1024;
x_n_z = cat(1,x_n,zeros(ceil(length(x_n)/cTF)*cTF-length(x_n),1));
XN_z =reshape(x_n_z,cTF, length(x_n_z)/cTF);
x_n_z = fft(XN_z,cTF,1);
Y = abs(x_n_z);
surf(Y(1:52,:));
%surf(F,T,10*log10(P'),'edgecolor','none'); axis tight;
%view(0,90);
xlabel('frequência (Hz)'); ylabel('tempo'); zlabel('amplitude(dB)');axis tight;
%plot(F,S_mod(1:(largura_seg/2+1),segmento));
Com essa alteração no código o espectro é mostrado da seguinte maneira:
- julho de 2012
- Escrevendo o artigo
x_w = x_n.*win;
t = 1/fs*[1:length(x_w)];
N_0 = length(x_w);
X_r = (fft(x_w)/N_0);
Dúvidas que surgiram
Comecei a escrever o artigo, já que não sei o que devo fazer agora e falta pouco para acabar.
23 de agosto de 2012
Artigo enviado ao professor.