Archivo:Window function (comparsion).png
De testwiki
Ir a la navegación
Ir a la búsqueda
Tamaño de esta previsualización: 800 × 588 píxeles. Otras resoluciones: 320 × 235 píxeles | 640 × 470 píxeles | 988 × 726 píxeles.
Archivo original (988 × 726 píxeles; tamaño de archivo: 54 kB; tipo MIME: image/png)
Este archivo es de Wikimedia Commons y puede usarse en otros proyectos. La descripción en su página de descripción del archivo se muestra debajo.
Resumen
| DescripciónWindow function (comparsion).png |
English: Comparison of different window functions |
||||||||
| Fecha | |||||||||
| Fuente | Own Work by user Marcel Müller | ||||||||
| Autor | Marcel Müller | ||||||||
| Permiso (Reutilización de este archivo) |
Marcel Müller de la Wikipedia en inglés, titular de los derechos de autor de esta obra, la publica en los términos de la siguiente licencia:
|
Esta imagen debería volverse a crear como imágenes vectoriales SVG. Esto proporciona muchas ventajas, véase Commons:Media for cleanup (en inglés) para más información. Si ya hay una versión SVG de esta imagen disponible, por favor súbala a Commons. Tras subirla, reemplace esta plantilla con la plantilla
{{vector version available|nuevo nombre de imagen.svg}} en esta imagen. |
Image details and source code
The image is created with Mathematica 3.0 and some beautifications with CorelDraw 7.0. Due to the old versions no SVG export is available.
Init
<< Graphics`Graphics` << Graphics`Legend`
Parameters
Len = 4096; (* Window length *) Oversamp = 8; (* Oversampling *)
Helper functions
CreateWindow[winfn_] := Table[winfn[p/Len], {p,0,Len}]
DoFFT[data_] := Chop@Take[
Fourier[RotateLeft[Join[data, Table[0, {Oversamp*(Length[data]-1)-Length[data]}]], (Length[data]-1)/2]],
(Length[data]-1)*Oversamp/2+1]
GetEnvelope[data_] := Block[
{min = 1, max, last = data[[1]]},
While[data[[min+1]] < last*1.001, last=data[[++min]]];
Map[
{#,data[[#]]}&,
{Range[min], Select[Range[2, Length[data]-1], # > min && data[[#-1]] < data[[#]] > data[[#+1]]&]},
{2}]
]
PlotWin[winfo_,opt___] := Block[
{fft = Abs@DoFFT@CreateWindow@winfo[[2]]},
ListPlot[
20*Log[10, fft/fft[[1]]+1*^-12],
GridLines->Automatic, PlotJoined->True, Frame->True, PlotRange->All, opt]
]
PlotWin2[winfo_,opt___] := Block[
{fft = GetEnvelope@Abs@DoFFT@CreateWindow@winfo[[2]]},
{LogLinearListPlot[
{#[[1]]/Oversamp, 20*Log[10,#[[2]]/fft[[1,1,2]]+1*^-12]}& /@ fft[[1]],
GridLines->Automatic, PlotJoined->True, Frame->True, PlotRange->All, opt],
LogLinearListPlot[
{#[[1]]/Oversamp, 20*Log[10,#[[2]]/fft[[1,1,2]]+1*^-12]}& /@ fft[[2]],
GridLines->Automatic, PlotJoined->True, Frame->True, PlotRange->All, opt]}
]
Colors = Apply[
RGBColor,
{{0,0,0}, {1,0,0}, {0,0,1}, {0,.7,0}, {.8,0,.8}, {0,.6,.6}, {.6,.6,0}, {.5,.5,.5}},
{1}];
Dashings = AbsoluteDashing/@(2{{} (*, {4,2}, {4,2,2,2}*)});
GetStyle[i_] :=
{Colors[[Mod[i-1,Length[Colors]]+1]],
Dashings[[Mod[Quotient[i-1,Length[Colors]], Length[Dashings]]+1]]}
Window Functions
GaussWin[sigma_] = Exp[-.5 * ((2#-1)/sigma)^2]&;
CosWin[a__] = Apply[Plus, {a} * Table[(-1)^p Cos[2 Pi p #], {p, 0, Length[{a}]-1}]]&;
KaiserWin[alpha_] = BesselI[0, Pi alpha Sqrt[1 - (2#-1)^2]] / BesselI[0, Pi alpha]&;
WinFN = {
{"Recangular", 1&, 1.},
{"Gauss \[Sigma]=.4", GaussWin[.4], 1.45},
{"Hamming", CosWin[.53836,.46164], 1.37},
{"Hann", CosWin[.5,.5], 1.5},
{"Bartlett", 1-Abs[2#-1]&, 1.33},
{"Bartlett-Hann", .62-.48Abs[#-.5]-.38Cos[2Pi#]&, 1.46},
{"Blackman", CosWin[.42,.5,.08], 1.73},
{"Kaiser \[Alpha]=1", KaiserWin[1], 1.2},
{"Kaiser \[Alpha]=2", KaiserWin[2], 1.5},
{"Kaiser \[Alpha]=3", KaiserWin[3], 1.8},
{"Nutall", CosWin[.355768,.487396,.144232,.012604], 2.01},
{"Blackman-Harris", CosWin[.35875,.48829,.14128,.01168], 2.01},
{"Blackman-Nutall", CosWin[.3635819,.4891775,.1365995,.0106411], 1.98},
{"Flat top", CosWin[1,1.93,1.29,.388,.032], 3.77}
};
Test Results
PlotWin[WinFN[[-1]]]; PlotWin2[WinFN[[-1]]]; ListPlot@CreateWindow[WinFN[[-1,2]]]; LogLogListPlot[DoFFT@CreateWindow[WinFN[[-1,2]]], PlotRange->All, PlotJoined->True, GridLines->Automatic]; DoFFT@CreateWindow[WinFN[[-1,2]]] GetEnvelope[Abs@DoFFT[CreateWindow[WinFN[[1,2]]]]]
Results
gr = Show[MapIndexed[
PlotWin2[#, DisplayFunction->Identity, PlotStyle->GetStyle[#2[[1]]]&, WinFN],
DisplayFunction->$DisplayFunction, PlotRange->{All, {-145,5}}];
gr2 = ShowLegend[
gr, {MapIndexed[{Graphics[Append[GetStyle[#2[[1]]], Line[{{0,0},{1,0}}]]],#[[1]]}&, WinFN],
LegendShadow->{0,0}, LegendPosition->{-.8,-.5}, LegendSize->{.4,.55}, LegendTextSpace->5}];
Licencia
Marcel Müller de la Wikipedia en inglés, titular de los derechos de autor de esta obra, la publica en los términos de la siguiente licencia:
| Este archivo se encuentra bajo la licencia Creative Commons Genérica de Atribución/Compartir-Igual 3.0. Sujeto a disclaimer. | ||
| Atribución: Marcel Müller de la Wikipedia en inglés | ||
| ||
| Esta etiqueta de licencia fue agregada a este archivo como parte de la actualización de la licencia GFDL.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
| Se autoriza la copia, distribución y modificación de este documento bajo los términos de la licencia de documentación libre GNU, versión 1.2 o cualquier otra que posteriormente publique la Fundación para el Software Libre; sin secciones invariables, textos de portada, ni textos de contraportada. Se incluye una copia de la dicha licencia en la sección titulada Licencia de Documentación Libre GNU. Sujeto a disclaimer.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Registro original de carga
Aquí se muestra la página de descripción original. Los siguientes nombres de usuario se refieren a en.wikipedia.
- 2007-01-19 20:25 Marcel Müller 988×726×??? (82239 bytes) Frequency response of the window functions. The double logarithmic plot shows the magnitude in dB over the normalized frequency. Besides the main lobe only the envelope of the frequency response is shown. This is more clearly and allows a quick comparsion
Leyendas
Añade una explicación corta acerca de lo que representa este archivo
Elementos representados en este archivo
representa a
21 jul 2006
Historial del archivo
Haz clic sobre una fecha y hora para ver el archivo tal como apareció en ese momento.
| Fecha y hora | Miniatura | Dimensiones | Usuario | Comentario | |
|---|---|---|---|---|---|
| actual | 22:53 2 oct 2016 | 988 × 726 (54 kB) | wikimediacommons>Cmdrjameson | Compressed with pngout. Reduced by 26kB (33% decrease). |
Usos del archivo
La siguiente página usa este archivo: