Resultados Trabalho1. Síntese componentes Onda quadrada:2. Aplicando Filtro2. Recompondo sinal no TempoReferências
xxxxxxxxxx>> quadrada3Rotina Síntese Componentes Onda QuadradaUsando Série de Fourier Frequência da Onda Quadrada? 349.23Número de harmônicas? 100Mostrandos as primeiras 15 harmônias:(Obs.: phase está em graus) index freq amp phase _____ ______ _______ _____ 1 349.23 3.1831 -90 2 698.46 0 0 3 1047.7 1.061 -90 4 1396.9 0 0 5 1746.2 0.63662 -90 6 2095.4 0 0 7 2444.6 0.45473 -90 8 2793.8 0 0 9 3143.1 0.35368 -90 10 3492.3 0 0 11 3841.5 0.28937 -90 12 4190.8 0 0 13 4540 0.24485 -90 14 4889.2 0 0 15 5238.5 0.21221 -90
Gerado arquivo: "dados_espectro.csv".
Espectro...Normalizado em função do menor valor de amplitude:Menor valor (abs) = 0.0321525 <== 0 dBMaior valor (abs) = 3.1831 ==> 39.9127 dB (99 vezes maior).
>> >> % Note:>> 20*log10(100)ans = 40Arquivo gerado:
xxxxxxxxxxindex freq amp phase1 349.23 3.18309886183791 02 698.46 0 03 1047.69 1.06103295394597 04 1396.92 0 05 1746.15 0.636619772367581 06 2095.38 0 07 2444.61 0.454728408833987 08 2793.84 0 09 3143.07 0.353677651315323 010 3492.3 0 011 3841.53 0.289372623803446 012 4190.76 0 013 4539.99 0.244853758602916 014 4889.22 0 015 5238.45 0.212206590789194 0Espectro do sinal gerado:

Forma temporal da onda quadrada sintetizada:

Obs.: Executado recompoe sobre arquivo dados_espectro.csv e ao final audiowrite('sinal_original.wav', yy, fs);.
xxxxxxxxxx>> aplica_filtroAplica filtro sobre componentes de uma onda
Arquivo CSV dos componentes originais da onda [dados_espectro.csv]: ? Lendo arquivo: "dados_espectro.csv"...
Número de componentes: 100
Frequência base: 349.23 Hz
Frequência máxima: 34923 Hz (100^a-harmônica)
Aplicando Filtro Rejeita faixa [f1 f1]...Freq. inferior [2444.61 Hz]: ? 2400Freq. inferior [5238.45 Hz]: ? 5300
Filtro Rejeita Faixa em [2400 5300] HzEquação do filtro Passa-Baixas:
ans = 3833.8 (s^2 + 3.523e08) --------------------------------- (s+6373) (s^2 + 2539s + 2.119e08) Continuous-time zero/pole/gain model.
Equação do filtro Passa-Altas:
ans = s (s^2 + 7.159e08) ----------------------------------- (s+7.88e04) (s^2 + 6017s + 1.19e09) Continuous-time zero/pole/gain model.
Equação final do filtro:
ans = (s^2 + 2.589e04s + 5.022e08) (s^2 - 5443s + 3.551e08) (s^2 - 7696s + 7.1e08) ---------------------------------------------------------------------------- (s+7.88e04) (s+6373) (s^2 + 2539s + 2.119e08) (s^2 + 6017s + 1.19e09) Continuous-time zero/pole/gain model.
Zeros do filtro:ans = -12943 + 18294i -12943 - 18294i 3848.2 + 26367i 3848.2 - 26367i 2721.6 + 18648i 2721.6 - 18648iPólos do filtro:ans = -78797 + 0i -3008.5 + 34365i -3008.5 - 34365i -1269.5 + 14502i -1269.5 - 14502i -6372.9 + 0iPolinômio do Numerador:num = Columns 1 through 6 1 12746 1.2691e+09 1.5461e+13 6.3731e+17 3.2141e+21 Column 7 1.2663e+26Polinômio do Denominador:den = Columns 1 through 6 1 93726 2.6481e+09 1.2929e+14 1.3298e+18 2.3635e+22 Column 7 1.2663e+26
Calculando Dados do filtro...Mostrandos as primeiras 15 harmônias:(Obs.: phase está em graus) index freq ganho_filt phase_filt atraso_ms _____ ______ __________ __________ _________ 1 349.23 0.94882 -19.583 -0.15576 2 698.46 0.83724 -35.972 -0.14306 3 1047.7 0.72947 -48.872 -0.12958 4 1396.9 0.66108 -60.19 -0.11969 5 1746.2 0.66341 -74.011 -0.11774 6 2095.4 0.83108 -105.2 -0.13946 7 2444.6 0.58087 161.49 0.1835 8 2793.8 0.15707 99.903 0.099329 9 3143.1 0.083067 45.347 0.040077 10 3492.3 0.075734 6.6017 0.005251 11 3841.5 0.077219 -24.501 -0.017716 12 4190.8 0.092707 -61.313 -0.04064 13 4540 0.15341 -98.659 -0.060364 14 4889.2 0.30765 -130.15 -0.073941 15 5238.4 0.61892 -165.65 -0.087838
Gerado arquivo: "dados_filtro.csv".
Calculando Impacto do Filtro sobre sinal original...Mostrandos as primeiras 15 harmônias:(Obs.: phase está em graus) index freq amp phase _____ ______ ________ _______ 1 349.23 3.0202 -109.58 2 698.46 0 -35.972 3 1047.7 0.77399 -138.87 4 1396.9 0 -60.19 5 1746.2 0.42234 -164.01 6 2095.4 0 -105.2 7 2444.6 0.26414 71.495 8 2793.8 0 99.903 9 3143.1 0.029379 -44.653 10 3492.3 0 6.6017 11 3841.5 0.022345 -114.5 12 4190.8 0 -61.313 13 4540 0.037564 -188.66 14 4889.2 0 -130.15 15 5238.4 0.13134 -255.65
Gerado arquivo sinal filtrado: "dados_filtrados.csv".
>> save filtro>> Espectro do filtro aplicado:

xxxxxxxxxx>> recompoeArquivo componentes do sinal [dados_espectro.csv]: ? dados_filtrados.csvRecuperando arquivo "dados_filtrados.csv"...Número de componentes: 100
Frequência base: 349.23 Hz
Frequência máxima: 34923 Hz (100^a-harmônica)1,5 ciclos deste sinal = 0.00501102 segundosSintetizar de t=0 até ? [t=0.00501102]: ? 2Sintetizando período de t=[0 2] segundos...
Usar que freq. de amostragem [44000 Hz]: ? Freq. de amostragem adotada: 44000 Hz
Usar tensão de offset? [0]: ? 2.5Tensão de offset adotada: 2.5 V.
Sintetizando 88001 pontos...Serão sinterizados aprox 126 pontos por ciclo...................
Se quiser ouvir novamente >> sound(yy,fs)
>> audiowrite('sinal_filtrado.wav', yy, fs);>> Forma de onda do sinal filtrado:

Sinal amostrado:

Obs.: Os pontos destacados, representam os instantes de amostragem.
Note: Foi aplicando um filtro rejeita-faixa elíptico de 3a-ordem para remover as harmônicas ímpares entre a 7a e a 15a harmônicas de uma onda quadrada. Você deve ouvir um timbre mais oco, redondo e parecido com o de uma flauta ou clarinete. O som deve ter perdido o "brilho" metálico e a aspereza (característicos da onda quadrada), ganhando assim um caráter mais suave. O filtro elíptico foi usado pois permitiu (ao contrário de um Butterworth de 3a-ordem, gerar um decaimento mais abrupto e profundo na região de frequências sendo rejeitada).
Comparando sinal original x filtrado:
| Sinal Original | Sinal Filtrado |
|---|---|
![]() | ![]() |
Fernando Passold, em 07/06/2026.