Файл:Спектральная утечка, вызванная «оконной обработкой».svg

Исходный файл (Файл SVG, номинально 1080 × 664 пикселей, размер файла: 170 КБ)

Краткое содержание

ОписаниеСпектральная утечка, вызванная «оконной обработкой».svg
Русский: Цель этого изображения — показать, что оконирование синусоиды приводит к спектральной утечке, даже если синусоида имеет целое число циклов в прямоугольном окне. Утечка очевидна во 2-й строке, синяя кривая. Она такая же, как и красная кривая, которая представляет немного более высокую частоту, которая не имеет целого числа циклов. Когда синусоида дискретизирована и оконирована, ее дискретное по времени преобразование Фурье также страдает от той же картины утечки. Но когда DTFT дискретизировано только с определенным интервалом, возможно (в зависимости от вашей точки зрения): (1) избежать утечки или (2) создать иллюзию отсутствия утечки. В случае синусоидальной синусоидальной кривой (3-я строка графиков, правая сторона) эти выборки являются выходами дискретного преобразования Фурье (DFT). Красная синусоида DTFT (4-я строка) имеет тот же интервал пересечений нуля, но выборки DFT попадают между ними, и утечка обнаруживается.
Дата
ИсточникСобственная работа
АвторБоб К.
Разрешение
(Повторное использование этого файла)
Я, владелец авторских прав на данную работу, настоящим публикую ее на условиях следующей лицензии:
Творческие права общего пользования CC-нольЭтот файл предоставляется в соответствии с лицензией Creative Commons CC0 1.0 Universal Public Domain Dedication.
Лицо, связавшее работу с этим актом, передало работу в общественное достояние, отказавшись от всех своих прав на работу во всем мире в соответствии с законом об авторском праве, включая все смежные и смежные права, в объеме, разрешенном законом. Вы можете копировать, изменять, распространять и исполнять работу, даже в коммерческих целях, и все это без запроса разрешения.

http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, передача в общественное достояниеЛОЖЬЛОЖЬ

Другие версииФайл:Спектральная_утечка_из_синусоиды_и_прямоугольного_окна.png
SVG-разработка
Инфополе
 
Исходный код этого SVG-файла недействителен из-за 5 ошибок.
 
Это векторное изображение, недопустимое по стандарту W3C, было создано с помощью LibreOffice.
Источник Octave/gnuplot
Инфополе
нажмите, чтобы развернуть

Эта графика была создана с помощью следующего скрипта Octave:

pkg load signal % Параметры frame_background_gray = true ;      if frame_background_gray graphics_toolkit ( "qt" ) % or graphics_toolkit("fltk") frame_background = .94 * [ 1 1 1 ]; d = 4 ; % количество для добавления к размерам текста ds = 8 ; % количество для размера маленького маркера dl = 12 ; % количество для размера большого маркера else graphics_toolkit ( "gnuplot" ) % фон будет белым независимо от значения ниже frame_background = .94 * [ 1 1 1 ]; d = 0 ; ds = 0 ;; dl = 0 endif                                    % (https://octave.org/doc/v4.2.1/Graphics-Object-Properties.html#Graphics-Object-Properties) % Ускорение работы при использовании Gnuplot set ( 0 , "DefaultAxesFontsize" , 10 + d ) set ( 0 , "DefaultTextFontsize" , 12 + d ) set ( 0 , "DefaultAxesYlim" ,[ - 2 2 ]) set ( 0 , "DefaultAxesYtick" ,[]) set ( 0 , " DefaultAxesXtick" ,[]) set ( 0 , "DefaultFigureColor" , frame_background ) set ( 0 , "DefaultAxesColor" , "white" )               %====================================================== samples_per_DFT = 64 ; DFT_display_bins = samples_per_DFT / 2 ; samples_per_DTFT = 1024 ; Hz_per_bin = 1 ; % Установить интервал между бинами DFT на 1 Гц samples_per_sec = Hz_per_bin * samples_per_DFT ; % соответствующая частота дискретизации I = 8 ; % передискретизировать версию отображения синусоид               cycles_per_DFT = 13 ; cycles_per_sample = cycles_per_DFT / ( I * samples_per_DFT ); signal1I = sin ( 2 * pi * cycles_per_sample * ( - 32 * I : 96 * I )); % дополнить окно [0,64] до ±32 window1 = signal1I ( 32 * I + ( 1 : samples_per_DFT * I ​​+ 1 )); % извлечь окно signal1 = window1 ( 1 : I : samples_per_DFT * I ​​); % уменьшить частоту передискретизации               cycles_per_DFT = 13.50 ; % повторить шаги для более высокой частоты cycles_per_sample = cycles_per_DFT / ( I * samples_per_DFT ); signal2I = sin ( 2 * pi * cycles_per_sample * ( - 32 * I : 96 * I )); window2 = signal2I ( 32 * I + ( 1 : samples_per_DFT * I ​​+ 1 )); signal2 = window2 ( 1 : I : samples_per_DFT * I ​​);              фильтр = нули ( 1 , длина ( сигнал1I )); % изображают прямоугольное окно юбка = 10 ; фильтр ( 32 * I + ( - юбка + 1 : выборки_на_ДПФ * I + юбка )) = 1.2 ;         %======================================================== hfig = figure ( "position" ,[ 1-891200800 ] , " color " , frame_background ) ;      x1 = .08 ; % левое поле для аннотации x2 = .02 ; % правое поле ws = .05 ; % пробел между графиками y1 = .08 % нижнее поле y2 = .08 % верхнее поле dy = .08 ; % вертикальное пространство между строками height = ( 1 - y1 - y2 - 3 * dy ) / 4 ; % пространство, выделенное для каждой из 4 строк                     % Вычислить ширину синусоидальных графиков xwhite = x1 + ws + ws + x2 ; % общее количество пробелов в строке, содержащей 3 графика width1 = ( 1 - xwhite ) / 3 ; % ширина всех синусоидальных графиков            y_origin = 1 ; % начать в верхней части области графика %========================================================= % Построить синусоиду без окна   x_origin = x1 ; y_origin = y_origin - y2 - height ; % позиция верхней строки подграфика ( "position" ,[ x_origin y_origin width1 height ])          plot (( - 32 * I : 96 * I ), signal1I , "цвет" , "черный" ) xlim ([ - 32 96 ] * I ) %ylim([-2 2]) set ( gca , "xaxislocation" , "origin" ) xlabel ( "без окна" )     %========================================================= % Построить 13-периодную синусоиду и прямоугольное окноx_origin = x_origin + width1 + ws ; подзаголовок ( "position" ,[ x_origin y_origin width1 height ])         plot ( 0 : length ( window1 ) - 1 , window1 , "color" , "blue" ) xlim ([ - 32 96 ] * I ) %ylim([-2 2]) set ( gca , "xaxislocation" , "origin" ) hold on plot (( - 32 * I : 96 * I ), filter , "color" , "black" , "linewidth" , 2 ) xlabel ( "13 cycles" )         %========================================================= % Построить 13½-периодную синусоиду и прямоугольное окноx_origin = x_origin + width1 + ws ; подзаголовок ( "position" ,[ x_origin y_origin width1 height ])         plot ( 0 : length ( window2 ) - 1 , window2 , "color" , "red" ) xlim ([ - 32 96 ] * I ) %ylim([-2 2]) set ( gca , "xaxislocation" , "origin" ) hold on plot (( - 32 * I : 96 * I ), filter , "color" , "black" , "linewidth" , 2 ) %xlabel("13½ cycles") % не работает         %======================================================== % Вычислить и построить преобразование Фурье двух синусоидx_origin = x1 ; y_origin = y_origin - dy - height ; width2 = 1 - x1 - x2 ; subplot ( "position" ,[ x_origin y_origin width2 height ])             N = выборок_на_DTFT ; Гц_на_бин = выборок_в_сек / N ; S1 = abs ( fft ( signal1 , N )); S1 = 20 * log10 ( S1 ( 1 : N / 2 )); S1 = max ( 0 , S1 );          plot (( 0 : длина ( S1 ) - 1 ) * Гц_на_бин , S1 , "цвет" , "синий" , "ширина линии" , 1 ); ylim ([ 0 макс ( S1 ) + 6 ]) xlim ([ 0 выборок_в_сек / 2 ])      set ( gca , "xtick" , 0 : DFT_display_bins ) % set(gca, "ytick",0:10:ylim(2)) % нет, нет, нет. Он переопределяет ylim. set ( gca , " ytick" , 0 : 10 :( max ( S1 ) + 6 )) подожди     S2 = abs ( fft ( signal2 , N )); S2 = 20 * log10 ( S2 ( 1 : N / 2 )); S2 = max ( 0 , S2 );      plot (( 0 : длина ( S2 ) - 1 ) * Гц_на_бин , S2 , "цвет" , "красный" , "ширина линии" , 1 );   % Вставить дельта-функцию для неоконной основы преобразования ( 13 , 35 , "^" , "MarkerSize" , 5 + ds , "linewidth" , 2 , "color" , "black" , "markeredgecolor" , "black" , "markerfacecolor" , "black" )       ylabel ( "децибелы" ) xlabel ( '\leftarrow частота \rightarrow' )%======================================================== % Повторный график 13-периодной синусоидыy_origin = y_origin - dy - height ; подграфик ( "position" ,[ x_origin y_origin width1 height ])       plot ( 0 : длина ( window1 ) - 1 , window1 , "цвет" , "синий" ) xlim ([ 0 длина ( window1 ) - 1 ]) %ylim([-2 2]) set ( gca , "xaxislocation" , "origin" ) hold on      % Наложение непрерывной синусоиды на график дискретных выборок ( 0 : I : samples_per_DFT * I ​​- 1 , signal1 , "color" , "blue" , ​​". " , "MarkerSize" , 5 + ds ) xlabel ( "discrete-time (sampled)" )    %======================================================== % Повторно построить преобразование Фурье, но обрезать его, чтобы оно соответствовало меньшему пространству.x_origin = x_origin + width1 + ws ; width3 = 1 - x_origin - x2 ; подзаголовок ( "position" ,[ x_origin y_origin width3 height ])              Гц_на_бин = выборок_на_сек / выборок_на_DTFT ; % DFT_display_bins = 32. Усечение графика до 22 интервалов: N = 22,5 / 32 * длина ( S1 );    plot (( 0 : N - 1 ) * Hz_per_bin , S1 ( 1 : N ), "цвет" , "синий" , "ширина линии" , 1 ); ylim ([ 0 max ( S1 ) + 6 ]) xlim ( [ 0 N - 1 ] * Hz_per_bin ); set ( gca , "xtick" , 0 : 22 ) удержание       % Вычислить и наложить дискретные значения ДПФ N = samples_per_DFT ; Hz_per_bin = samples_per_sec / N ; S = abs ( fft ( signal1 , N )); S = 20 * log10 ( S ( 1 : N / 2 )); S = max ( 0 , S ); N = 23 ;            plot (( 0 : N - 1 ) * Hz_per_bin , S ( 1 : N ), "цвет" , "синий" , "."" , "РазмерМаркера" , 10 + dl ); set ( gca , "xtick" ,( 0 : N - 1 ) * Hz_per_bin )     %======================================================== % Повторный график 13½-периодной синусоидыx_origin = x1 ; y_origin = y_origin - dy - height ; subplot ( "position" ,[ x_origin y_origin width1 height ])         plot ( 0 : длина ( window2 ) - 1 , window2 , "цвет" , "красный" ) xlim ([ 0 длина ( window2 ) - 1 ]) %ylim([-2 2]) set ( gca , "xaxislocation" , "origin" ) hold on      % Наложение непрерывной синусоиды на график дискретных выборок ( 0 : I : samples_per_DFT * I ​​- 1 , signal2 , "color" , "red" , ". " , "MarkerSize" , 5 + ds ) xlabel ( "discrete-time (sampled)" )    %======================================================== % Повторно построить преобразование Фурье, но обрезать его, чтобы оно соответствовало меньшему пространству.x_origin = x_origin + width1 + ws ; подзаголовок ( "position" ,[ x_origin y_origin width3 height ])         Гц_на_бин = выборок_на_сек / выборок_на_DTFT ; % DFT_display_bins = 32. Усечение графика до 22 интервалов: N = 22,5 / 32 * длина ( S2 );    plot (( 0 : N - 1 ) * Hz_per_bin , S2 ( 1 : N ), "цвет" , "красный" , "ширина линии" , 1 ); ylim ([ 0 max ( S2 ) + 6 ]) xlim ( [ 0 ( N - 1 ) * Hz_per_bin ]) set ( gca , "xtick" , 0 : 22 ) удержание       % Вычислить и наложить дискретные значения ДПФ N = samples_per_DFT ; Hz_per_bin = samples_per_sec / N ; S = abs ( fft ( signal2 , N )); S = 20 * log10 ( S ( 1 : N / 2 )); S = max ( 0 , S ); N = 23 ;            plot (( 0 : N - 1 ) * Hz_per_bin , S ( 1 : N ), "color" , "red" , "."" , "MarkerSize" , 10 + dl ); set ( gca , "xtick" ,( 0 : N - 1 ) * Hz_per_bin ) xlabel ( "DFT bins" )     

Подписи

Добавьте однострочное объяснение того, что представляет собой этот файл.

Элементы, изображенные в этом файле

изображает

создатель

некоторая ценность

Имя пользователя Wikimedia : Боб К.
URL: https://commons.wikimedia.org/wiki/user:Bob_K
author name string: Bob K

copyright status

copyrighted, dedicated to the public domain by copyright holder

copyrighted

copyright license

Creative Commons CC0 License

inception

11 November 2018

source of file

original creation by uploader

media type

image/svg+xml

История файла

Нажмите на дату/время, чтобы просмотреть файл в том виде, в котором он был в тот момент.

Дата/ВремяМиниатюраРазмерыПользовательКомментарий
текущий13:05, 26 января 2020 г.1080 × 664 (170 КБ)Боб К.исправлены отсутствующие тики (2-я строка)
23:49, 25 января 2020 г.1080 × 664 (166 КБ)Боб К.изменить фон рамки на серый с помощью инструментария "qt" вместо gnuplot
22:24, 12 ноября 2018 г.1080 × 652 (161 КБ)Боб К.Измените частоту с 13¼ до 13½ циклов (на ширину окна) и обозначьте последующее гребнеобразование.
17:35, 11 ноября 2018 г.1080 × 652 (157 КБ)Боб К.Пользователь создал страницу с помощью UploadWizard

Следующие 2 страницы используют этот файл:

Глобальное использование файлов

Этот файл используют и другие вики:

  • Использование на es.wikipedia.org
    • Ventana (функция)
  • Использование на uk.wikipedia.org
    • Віконна фунція

Метаданные

Retrieved from "https://en.wikipedia.org/wiki/File:Spectral_leakage_caused_by_%22windowing%22.svg"