KR102514264B1 - 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 - Google Patents

고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 Download PDF

Info

Publication number
KR102514264B1
KR102514264B1 KR1020210048081A KR20210048081A KR102514264B1 KR 102514264 B1 KR102514264 B1 KR 102514264B1 KR 1020210048081 A KR1020210048081 A KR 1020210048081A KR 20210048081 A KR20210048081 A KR 20210048081A KR 102514264 B1 KR102514264 B1 KR 102514264B1
Authority
KR
South Korea
Prior art keywords
matrix
input vector
vector
obtaining
fourier transform
Prior art date
Application number
KR1020210048081A
Other languages
English (en)
Other versions
KR20220141680A (ko
Inventor
강유
박용찬
장준기
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020210048081A priority Critical patent/KR102514264B1/ko
Publication of KR20220141680A publication Critical patent/KR20220141680A/ko
Application granted granted Critical
Publication of KR102514264B1 publication Critical patent/KR102514264B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

일 실시예에 따른 고속 부분 푸리에 변환(fast partial Fourier transform) 방법은, 입력 벡터(
Figure 112021043125686-pat00317
) 및 상기 입력 벡터(
Figure 112021043125686-pat00318
)에 대한 푸리에 계수를 구하고자 하는 출력 구간(
Figure 112021043125686-pat00319
)을 입력받는 단계 및 상기 입력 벡터(
Figure 112021043125686-pat00320
) 및 상기 출력 구간(
Figure 112021043125686-pat00321
)에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
Figure 112021043125686-pat00322
)을 이용하여, 상기 출력 구간(
Figure 112021043125686-pat00323
)에 대한 상기 입력 벡터(
Figure 112021043125686-pat00324
)의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함한다.

Description

고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 {FAST PARTIAL FOURIER TRANSFORM METHOD AND COMPUTING APPARATUS FOR PERFORMING THE SAME}
본 명세서에서 개시되는 실시예들은 푸리에 변환(Fourier transform)에 관한 것으로서, 구체적으로 이산적인 데이터에 대해서 일부의 푸리에 계수(Fourier coefficient)만을 구하고자 할 때 빠르게 계산을 수행할 수 있는 방법 및 이를 수행하기 위한 컴퓨팅 장치에 관한 것이다.
푸리에 변환(Fourier transform)은 디지털 신호 처리, 이미지와 영상의 압축, CT 스캐너 및 MRI 분석, 데이터 이상 감지 등의 기술 분야에서 활발하게 이용되고 있는 알고리즘으로, 최근 급격한 성장세를 지속하고 있는 5G 네트워크와 데이터 산업 시장 전반에 걸쳐 상당한 영향력을 가지고 있는 기술이며, 고속 푸리에 변환(Fast Fourier Transform, 이하 'FFT')은 이산적인 데이터에 대한 푸리에 변환을 고속으로 수행하는 기술이다.
기존의 FFT에 따르면 일부의 푸리에 계수들만을 구하고자 할 때에도 전체 푸리에 계수들을 모두 계산해야만 해 비효율적이며, 이러한 문제를 해결하기 위해 제안된 방식들은 구하고자 하는 푸리에 계수의 수가 아주 작을 때에만 활용할 수 있는 한계가 있다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 이산적인 입력 데이터에 대한 푸리에 계수를 구함에 있어서, 전체 푸리에 계수들 중 일부만을 구하되, 구하고자 하는 푸리에 계수의 수가 입력 데이터에 비해 아주 작지 않은 경우에도 계산 속도를 효율적으로 단축시킬 수 있는 푸리에 변환 방법을 제공하고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면 고속 부분 푸리에 변환(fast partial Fourier transform) 방법은, 입력 벡터(
Figure 112021043125686-pat00001
) 및 상기 입력 벡터(
Figure 112021043125686-pat00002
)에 대한 푸리에 계수를 구하고자 하는 출력 구간(
Figure 112021043125686-pat00003
)을 입력받는 단계 및 상기 입력 벡터(
Figure 112021043125686-pat00004
) 및 상기 출력 구간(
Figure 112021043125686-pat00005
)에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
Figure 112021043125686-pat00006
)을 이용하여, 상기 출력 구간(
Figure 112021043125686-pat00007
)에 대한 상기 입력 벡터(
Figure 112021043125686-pat00008
)의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 컴퓨터 프로그램으로서, 고속 부분 푸리에 변환 방법은, 입력 벡터(
Figure 112021043125686-pat00009
) 및 상기 입력 벡터(
Figure 112021043125686-pat00010
)에 대한 푸리에 계수를 구하고자 하는 출력 구간(
Figure 112021043125686-pat00011
)을 입력받는 단계 및 상기 입력 벡터(
Figure 112021043125686-pat00012
) 및 상기 출력 구간(
Figure 112021043125686-pat00013
)에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
Figure 112021043125686-pat00014
)을 이용하여, 상기 출력 구간(
Figure 112021043125686-pat00015
)에 대한 상기 입력 벡터(
Figure 112021043125686-pat00016
)의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서, 고속 부분 푸리에 변환 방법은, 입력 벡터(
Figure 112021043125686-pat00017
) 및 상기 입력 벡터(
Figure 112021043125686-pat00018
)에 대한 푸리에 계수를 구하고자 하는 출력 구간(
Figure 112021043125686-pat00019
)을 입력받는 단계 및 상기 입력 벡터(
Figure 112021043125686-pat00020
) 및 상기 출력 구간(
Figure 112021043125686-pat00021
)에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
Figure 112021043125686-pat00022
)을 이용하여, 상기 출력 구간(
Figure 112021043125686-pat00023
)에 대한 상기 입력 벡터(
Figure 112021043125686-pat00024
)의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 컴퓨팅 장치는, 데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부, 고속 부분 푸리에 변환을 수행하기 위한 프로그램 및 데이터가 저장되는 저장부 및 적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 고속 부분 푸리에 변환을 수행하는 제어부를 포함하며, 상기 제어부는 상기 입출력부를 통해 입력 벡터(
Figure 112021043125686-pat00025
) 및 상기 입력 벡터(
Figure 112021043125686-pat00026
)에 대한 푸리에 계수를 구하고자 하는 출력 구간(
Figure 112021043125686-pat00027
)을 입력받으면, 상기 프로그램을 실행시킴으로써 상기 입력 벡터(
Figure 112021043125686-pat00028
) 및 상기 출력 구간(
Figure 112021043125686-pat00029
)에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
Figure 112021043125686-pat00030
)을 이용하여, 상기 출력 구간(
Figure 112021043125686-pat00031
)에 대한 상기 입력 벡터(
Figure 112021043125686-pat00032
)의 푸리에 계수를 근사화한 벡터를 구할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 특정 출력 구간에 대한 입력 벡터의 푸리에 계수를 구함에 있어서, 입력 벡터 및 출력 구간에 대한 정보를 이용하여 사전에 계산된 전처리 행렬을 이용함으로써 연산량을 줄이는 효과를 기대할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 고속 부분 푸리에 변환을 수행하기 위한 컴퓨팅 장치의 구성을 도시한 도면이다.
도 2는 일 실시예에 따른 고속 부분 푸리에 변환을 수행하는 과정을 설명하기 위한 도면이다.
도 3 및 도 4는 일 실시예에 따른 고속 부분 푸리에 변환 방법을 설명하기 위한 순서도들이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다. 먼저 도 1을 참조하여 일 실시예에 따른 고속 부분 푸리에 변환(Fast Partial Fourier Transform, 이하 'FPFT')을 수행하기 위한 컴퓨팅 장치의 구성에 대해서 간략히 설명하고, 이어서 도 2를 참조하여 일 실시예에 따른 FPFT를 수행하는 과정에 대해서 자세히 설명한다.
도 1은 일 실시예에 따른 FPFT를 수행하기 위한 컴퓨팅 장치의 구성을 도시한 도면이다. 도 1을 참고하면, 일 실시예에 따른 컴퓨팅 장치(100)는 입출력부(110), 저장부(120) 및 제어부(130)를 포함할 수 있다.
입출력부(110)는 사용자로부터 명령이나 데이터를 수신하고, 수신한 명령이나 데이터에 기초하여 연산을 수행한 결과를 출력하기 위한 구성이다. 입출력부(110)는 사용자로부터 입력을 수신하기 위한 다양한 종류의 입력장치(e.g. 키보드, 터치스크린 등)를 포함할 수 있으며, 또한 FPFT 수행에 사용되는 데이터 및 연산 결과 데이터를 송수신하기 위한 연결 포트나 통신 모듈을 포함할 수도 있다.
저장부(120)는 파일 및 프로그램이 저장될 수 있는 구성으로서 다양한 종류의 메모리를 통해 구성될 수 있다. 특히, 저장부(120)에는 후술할 제어부(130)가 이하에서 제시되는 프로세스에 따라 FPFT를 위한 연산을 수행할 수 있도록 하는 데이터 및 프로그램이 저장될 수 있다.
제어부(130)는 CPU 등과 같은 적어도 하나의 프로세서를 포함하는 구성으로서, 저장부(120)에 저장된 프로그램을 실행함으로써 이하에서 제시되는 프로세스에 따라 FPFT를 수행한다.
이하에서는 제어부(130)가 저장부(120)에 저장된 프로그램을 실행시킴으로써 일 실시예에 따른 FPFT를 수행하는 과정에 대해서, 도 2를 참조하여 자세히 설명한다. 도 2를 참조하여 설명하는 모든 프로세스들은 제어부(130)에 의해 수행되는 것이다.
도 2는 일 실시예에 따른 고속 부분 푸리에 변환을 수행하는 과정을 설명하기 위한 도면이다.
FPFT의 개념을 간단히 설명하면 다음과 같다. FPFT는 임의의 벡터에 대해서 특정 구간에서의 푸리에 계수에 대한 근사 벡터를 구하기 위한 것이며, 좀 더 상세하게는 크기가
Figure 112021043125686-pat00033
인 복소 벡터(complex-valued vector)
Figure 112021043125686-pat00034
가 (입력 데이터로서) 주어졌을 때, 구간
Figure 112021043125686-pat00035
에서의
Figure 112021043125686-pat00036
에 대한 푸리에 계수에 대한 근사 벡터를 구하기 위한 것이다. 이때,
Figure 112021043125686-pat00037
은 음수가 아닌 정수(non-negative integer)이고,
Figure 112021043125686-pat00038
는 정수(integer)이다.
FPFT는 크게 '전처리 단계'와 '계산 단계'로 구성되며 각각의 단계에 대해서 아래에서 자세히 설명한다.
1. 전처리 단계
입력과 출력에 대한 정보로부터 필요한 연산의 일부를 사전에 수행하는 단계이다.
전처리 단계를 수행하기 위해 필요한 정보는, 입력 벡터
Figure 112021043125686-pat00039
의 크기
Figure 112021043125686-pat00040
, 출력 구간을 특정하기 위한 정보
Figure 112021043125686-pat00041
Figure 112021043125686-pat00042
(이때, 출력 구간은
Figure 112021043125686-pat00043
로 특정됨), 인자(divisor)
Figure 112021043125686-pat00044
, 허용오차(tolerance)
Figure 112021043125686-pat00045
이다.
전처리 단계를 수행하면 전처리 행렬
Figure 112021043125686-pat00046
, 파라미터
Figure 112021043125686-pat00047
,
Figure 112021043125686-pat00048
,
Figure 112021043125686-pat00049
를 얻을 수 있다. (이때,
Figure 112021043125686-pat00050
는 인자(divisor)이고,
Figure 112021043125686-pat00051
Figure 112021043125686-pat00052
은 각각 행렬
Figure 112021043125686-pat00053
의 행과 열의 개수임)
전처리 단계를 수행함에 있어서, 사전에 계산된
Figure 112021043125686-pat00054
Figure 112021043125686-pat00055
를 이용하며, 전처리 단계를 수행하기 위한 알고리즘 1을 다음의 표 1에 나타내었다.
Figure 112021043125686-pat00056
Figure 112021043125686-pat00057
를 사전에 계산하는 방법을 비롯해 알고리즘 1에 대한 자세한 설명은 아래에서 '연산 이론' 부분에 기재하였다.
Figure 112021043125686-pat00058
도 2를 참고하면, 상기 알고리즘 1에 따라 입력 벡터(210) 및 출력 구간에 대한 정보를 이용하여 전처리 행렬(230)을 사전에 계산할 수 있다.
이렇게 계산된 전처리 행렬(230)은 입력 벡터의 크기와 출력 구간만 동일하다면, 임의의 입력 벡터에 대해서 푸리에 계수의 근사 벡터를 구할 때 사용될 수 있다. 따라서, 런타임 동안에 수행해야 하는 연산량을 줄일 수 있다.
2. 계산 단계
계산 단계는 사전에 계산된 전처리 행렬(230)을 이용하여, 크기가
Figure 112021043125686-pat00059
인 임의의 벡터
Figure 112021043125686-pat00060
에 대해서, 구간
Figure 112021043125686-pat00061
에서의 푸리에 계수에 대한 근사 벡터를 계산하는 단계이다.
계산 단계에서 수행되는 프로세스들을 정리하면 다음과 같다.
1)
Figure 112021043125686-pat00062
로부터 변환 행렬
Figure 112021043125686-pat00063
(220)를 구한다. 이때, 사전 계산된 전처리 행렬의 행의 개수를 이용하여 변환 행렬(220)을 구하는데, 그에 따라 변환 행렬(220)은 전처리 행렬(230)과 행렬곱이 가능한 형태가 된다.
(
Figure 112021043125686-pat00064
)
2)
Figure 112021043125686-pat00065
Figure 112021043125686-pat00066
의 행렬곱을 제1 중간 행렬
Figure 112021043125686-pat00067
(240)로 저장한다.
3) 제1 중간 행렬
Figure 112021043125686-pat00068
(240)의 각 열에 대해서 FFT 수행하여 제2 중간 행렬(250)을 구한다.
4) 제2 중간 행렬(250)의 각 행에 대한 내적을 통해
Figure 112021043125686-pat00069
의 푸리에 계수를 근사화한다.
5) 구간
Figure 112021043125686-pat00070
에서의 벡터
Figure 112021043125686-pat00071
의 푸리에 계수의 근사 벡터(260)를 출력한다.
계산 단계를 수행하기 위한 알고리즘 2를 다음의 표 2에 나타내었다. 알고리즘 2와 관련한 자세한 설명은 아래에서 '연산 이론' 부분에 기재하였다.
Figure 112021043125686-pat00072
이하에서는 상술한 바와 같은 컴퓨팅 장치(100)를 이용하여 FPFT를 수행하는 방법을 설명한다. 도 3 및 도 4는 실시예들에 따른 FPFT 방법을 설명하기 위한 순서도들이다.
도 3 및 도 4는 실시예들에 따른 FPFT 방법은 도 1에 도시된 컴퓨팅 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1의 컴퓨팅 장치(100)에 관하여 이상에서 기술한 내용은 도 3 및 도 4는 실시예들에 따른 FPFT 방법에도 적용될 수 있다.
도 3을 참고하면, 301 단계에서 제어부(130)는 입출력부(110)를 통해 입력 벡터 및 입력 벡터에 대한 푸리에 계수를 구하고자 하는 출력 구간을 수신한다. 302 단계에서 제어부(130)는 입력 벡터 및 출력 구간에 대한 정보를 이용하여 사전에 계산된 전처리 행렬을 이용하여, 출력 구간에 대한 입력 벡터의 푸리에 계수를 근사화한 벡터를 계산한다.
302 단계에 포함되는 세부 단계들을 도 4에 도시하였다.
도 4를 참고하면, 401 단계에서 제어부(130)는 입력 벡터로부터, 전처리 행렬과 행렬곱이 가능한 형태의 변환 행렬을 구한다. 402 단계에서 제어부(130)는 변환 행렬과 전처리 행렬의 행렬곱을 계산하여 제1 중간 행렬을 구한다. 403 단계에서 제어부(130)는 제1 중간 행렬의 각 열에 대해 고속 푸리에 변환(FFT)을 수행하여 제2 중간 행렬을 구한다. 404 단계에서 제어부(130)는 제2 중간 행렬의 각 행에 대한 내적을 계산함으로써 출력 구간에 대한 입력 벡터의 푸리에 계수를 근사화한 벡터를 구한다.
이하에서는 어떻게 위에서 설명한 바와 같은 알고리즘 1 및 2에 따라 특정 출력 구간에 대한 푸리에 계수의 근사 벡터를 구할 수 있는지, 어떻게 전처리 행렬을 사전에 계산에 놓았다가 임의의 입력 벡터에 대한 푸리에 계수 계산 시 사용할 수 있는지를 뒷받침하기 위한 '연산 이론'에 대해서 설명한다.
3. FPFT와 관련된 연산 이론
본 명세서에서 제안된 FPFT에 따르면 푸리에 계수 중 일부만을 구하기 위해서 쿨리-튜키 알고리즘(Cooley-Tukey algorithm)을 수정하여 적용하고, 진동성이 작은 회전인자들만을 추출하여 다항식으로 근사화하는데, 근사화 과정에서의 연산 부담을 줄이기 위해 기저 지수 함수(base exponential function)를 이용하고, 전체적인 연산량을 감소시키기 위해 연산을 재배열(reordering operations)하고, 인자를 분해(factorizing terms)한다.
가. 회전인자(twiddle factor)들의 근사화
회전인자들 중 진동성(oscillation)이 작은 것들을 추출하고, 이를 다항함수 형태로 근사화 한다. 이와 같이 함으로써 많은 회전인자들로 인해 복잡한 DFT 연산을 줄일 수 있다.
(1) 진동성이 작은 회전인자의 추출
먼저 진동성이 작은 회전인자를 찾는 방법에 대해서 설명하면 다음과 같다.
크기가
Figure 112021043125686-pat00073
인 입력 벡터
Figure 112021043125686-pat00074
에 대한 DFT는 다음의 수학식 1과 같이 정의된다.
Figure 112021043125686-pat00075
이때, 양의 정수
Figure 112021043125686-pat00076
에 대해서
Figure 112021043125686-pat00077
Figure 112021043125686-pat00078
를 의미한다. 또한,
Figure 112021043125686-pat00079
을 만족하는
Figure 112021043125686-pat00080
가 존재한다고 가정한다. 쿨리-튜키 알고리즘에 따르면 수학식 1은 다음의 수학식 2와 같이 나타낼 수 있다.
Figure 112021043125686-pat00081
수학식 2로부터 2개의 회전인자 모음을 얻을 수 있다. 첫 번째 회전인자 모음은
Figure 112021043125686-pat00082
이고, 두 번째 회전인자 모음은
Figure 112021043125686-pat00083
이다.
Figure 112021043125686-pat00084
은 음이 아닌 정수이면서
Figure 112021043125686-pat00085
를 만족한다고 할 때,
Figure 112021043125686-pat00086
인 구간에 대해서
Figure 112021043125686-pat00087
을 구하는 경우를 생각해 보면,
Figure 112021043125686-pat00088
의 지수는
Figure 112021043125686-pat00089
에서
Figure 112021043125686-pat00090
사이의 범위에 존재하고,
Figure 112021043125686-pat00091
의 지수는
Figure 112021043125686-pat00092
에서
Figure 112021043125686-pat00093
사이의 범위에 존재하는데,
Figure 112021043125686-pat00094
이므로 첫 번째 회전인자 모음이 두 번째 회전인자 모음에 비해 상대적으로 작은 진동수의 회전인자들을 포함하고 있음을 알 수 있다.
일반적으로, 작은 진동수의 함수들을 다항식으로 근사화할 경우 더 좋은 근사화 결과를 얻을 수 있다. 따라서, 첫 번째 회전인자 모듬에 포함된 회전인자들을 다항함수로 근사화한다. 또한 이때, 수학식 1의 첫 번째 항을 다음의 수학식 3과 같이 조금 변경함으로써 근사화 연산의 복잡도를 줄일 수 있다.
Figure 112021043125686-pat00095
수학식 3에서의 첫 번째 회전인자 모음인
Figure 112021043125686-pat00096
의 지수의 범위는
Figure 112021043125686-pat00097
이고, 이는 수학식 2에 따른 첫 번째 회전인자 모음의 지수의 범위였던
Figure 112021043125686-pat00098
와 비교할 때 거의 절반으로 줄어들었다.
따라서, 수학식 3에서의 첫 번째 회전인자 모음에 포함된 회전인자들이, 수학식 2에서의 첫 번째 회전인자 모음에 포함된 회전인자들에 비해 진동성이 더 작다.
수학식 3에서는 추가적인 회전인자인
Figure 112021043125686-pat00099
이 포함되어 있지만, 이는
Figure 112021043125686-pat00100
Figure 112021043125686-pat00101
에 의존적이지 않기 때문에 이를 구하기 위한 연산량은 상대적으로 작다.
(2) 기저 지수 함수(base exponential function)의 이용
수학식 3에서의 첫 번째 회전인자 모음은
Figure 112021043125686-pat00102
개의 지수함수들로 구성된다. 각각의 지수함수에 대해서 근사화를 수행할 수도 있지만, 이렇게 할 경우 계산에 많은 시간이 소요된다. 따라서, 연산량을 감소시키기 위해 다음과 같은 프로세스를 이용한다.
1)
Figure 112021043125686-pat00103
를 기저 지수 함수로 선택함. 이때,
Figure 112021043125686-pat00104
는 임의의 고정된 값임.
2)
Figure 112021043125686-pat00105
를 다항식으로 근사화함.
3) 지수 함수의 특성을 이용하여,
Figure 112021043125686-pat00106
를 근사화한 다항식으로부터
Figure 112021043125686-pat00107
를 근사화한 다항식을 구함.
3)번 프로세스에 대해서 구체적으로 설명하면 다음과 같다.
Figure 112021043125686-pat00108
에서
Figure 112021043125686-pat00109
를 근사화한 다항식
Figure 112021043125686-pat00110
를 얻었다고 가정한다. 이때,
Figure 112021043125686-pat00111
Figure 112021043125686-pat00112
는 0이 아닌 실수다.
Figure 112021043125686-pat00113
인 또 다른 지수 함수
Figure 112021043125686-pat00114
가 있다고 할 때,
Figure 112021043125686-pat00115
이기 때문에 리스케일링(re-scaling)된 다항 함수
Figure 112021043125686-pat00116
는 구간
Figure 112021043125686-pat00117
에서
Figure 112021043125686-pat00118
를 근사화하는 것이다.
이러한 사실로부터 다음을 알 수 있다.
적절하게 선택된
Figure 112021043125686-pat00119
Figure 112021043125686-pat00120
에 대해서 구간
Figure 112021043125686-pat00121
에 대한
Figure 112021043125686-pat00122
의 근사 다항식
Figure 112021043125686-pat00123
를 구한다면,
Figure 112021043125686-pat00124
에 포함된 모든 성분들은
Figure 112021043125686-pat00125
를 리스케일링함으로써 근사화할 수 있다.
따라서, 기저 지수 함수를 고정한다면 해당 기저 지수 함수를 근사화한 다항식을 사전에 구해놓을 수 있고, 따라서 FDFT를 수행하는 런타임(run-time) 동안에 수행해야 하는 근사화 연산을 줄일 수 있다.
몇 가지 정리(definition 1 및 2)를 한 후에 이에 대해서 더 자세히 설명한다.
정리를 위해 다음과 같이 가정한다.
Figure 112021043125686-pat00126
를 세트
Figure 112021043125686-pat00127
로 제한된 유니폼 놈(uniform norm)이라고 가정한다. 즉,
Figure 112021043125686-pat00128
Figure 112021043125686-pat00129
이고,
Figure 112021043125686-pat00130
는 최대 차수가
Figure 112021043125686-pat00131
인 다항식 세트이다.
정리 1 (definition 1)
양의 정수
Figure 112021043125686-pat00132
와 0이 아닌 실수
Figure 112021043125686-pat00133
Figure 112021043125686-pat00134
가 주어질 때,
Figure 112021043125686-pat00135
인 조건에서 공간
Figure 112021043125686-pat00136
에서의
Figure 112021043125686-pat00137
에 대한 최적 근사화 다항식
Figure 112021043125686-pat00138
는 다음의 수학식 4와 같이 정의된다.
Figure 112021043125686-pat00139
Figure 112021043125686-pat00140
또는
Figure 112021043125686-pat00141
일 때
Figure 112021043125686-pat00142
이다.
정리 2 (definition 2)
허용 오차
Figure 112021043125686-pat00143
와 양의 정수
Figure 112021043125686-pat00144
이 주어졌을 때,
Figure 112021043125686-pat00145
를 아래의 수학식 5와 같이 원점에 대한 범위로 정의함으로써 지수 함수
Figure 112021043125686-pat00146
를 오차한계
Figure 112021043125686-pat00147
이며 차수가
Figure 112021043125686-pat00148
미만인 다항식으로 근사화 할 수 있다.
Figure 112021043125686-pat00149
또한, 위 범위에 대응되는 다항식을 아래의 수학식 6과 같이 표현할 수 있다.
Figure 112021043125686-pat00150
정리 2에서
Figure 112021043125686-pat00151
를 기저 지수 함수로 선택하는데, 이렇게 선택한 이유는 다음과 같다.
첫 번째로 최소극대화(minimax) 알고리즘을 이용하여, 몇몇의 오차한계
Figure 112021043125686-pat00152
와 양의 정수
Figure 112021043125686-pat00153
에 대해서
Figure 112021043125686-pat00154
Figure 112021043125686-pat00155
를 사전 계산할 수 있다. 그리고
Figure 112021043125686-pat00156
,
Figure 112021043125686-pat00157
,
Figure 112021043125686-pat00158
그리고
Figure 112021043125686-pat00159
가 주어졌을 때,
Figure 112021043125686-pat00160
를 만족하는
Figure 112021043125686-pat00161
의 최소값을 찾을 수 있다.
리스케일링된 다항 함수
Figure 112021043125686-pat00162
는 각각의
Figure 112021043125686-pat00163
에 대한 구간
Figure 112021043125686-pat00164
에서
Figure 112021043125686-pat00165
를 근사화한다.
모든
Figure 112021043125686-pat00166
에 대해서
Figure 112021043125686-pat00167
를 만족하고, 구간
Figure 112021043125686-pat00168
에서 수학식 3의 첫 번째 회전인자 모음인
Figure 112021043125686-pat00169
Figure 112021043125686-pat00170
와 같이 다항식으로 근사화 할 수 있다.
이와 같이, 수학식 3의 첫 번째 회전인자 모음을 근사화함으로써 구간
Figure 112021043125686-pat00171
에 대한
Figure 112021043125686-pat00172
의 근사값을 다음의 수학식 7과 같이 구할 수 있다.
Figure 112021043125686-pat00173
나. 목표구간(target range)을 임의로 설정하는 방법
지금까지는
Figure 112021043125686-pat00174
의 구간에 속한
Figure 112021043125686-pat00175
에 대한
Figure 112021043125686-pat00176
를 근사화하는 방법에 대해서 설명했다. 이제부터는 푸리에 계수를 구하고자 하는 구간을 '목표구간(target range)'이라고 하고,
Figure 112021043125686-pat00177
Figure 112021043125686-pat00178
를 의미한다고 가정한다. (이때,
Figure 112021043125686-pat00179
) 위에서 살펴본 방법들은
Figure 112021043125686-pat00180
으로 목표구간의 중심이 설정되었을 때 사용 가능한 방법들이다.
알고리즘을 조금만 변경한다면 목표구간의 중심이 임의로 설정되더라도 사용 가능하다. 예를 들어, 다음과 같은 방법을 생각할 수 있다. 크기
Figure 112021043125686-pat00181
의 복소벡터
Figure 112021043125686-pat00182
가 주어지고, 벡터
Figure 112021043125686-pat00183
Figure 112021043125686-pat00184
Figure 112021043125686-pat00185
를 의미한다고 가정할 때,
Figure 112021043125686-pat00186
Figure 112021043125686-pat00187
의 푸리에 계수는 다음의 수학식 8의 관계를 만족한다.
Figure 112021043125686-pat00188
따라서,
Figure 112021043125686-pat00189
Figure 112021043125686-pat00190
에 대한
Figure 112021043125686-pat00191
를 계산한다면
Figure 112021043125686-pat00192
에 대한
Figure 112021043125686-pat00193
도 구할 수 있다. 그런데 이 방법은,
Figure 112021043125686-pat00194
의 계산으로 인해 추가적인
Figure 112021043125686-pat00195
개의 곱셈을 필요로 한다. 런타임 동안에 추가적인 연산 프로세스를 수행하지 않도록 하기 위해서 다음과 같은 보조정리(lemma)를 이용할 수 있다.
보조정리 1 (lemma 1)
음이 아닌 정수
Figure 112021043125686-pat00196
, 0이 아닌 실수
Figure 112021043125686-pat00197
Figure 112021043125686-pat00198
, 임의의 실수
Figure 112021043125686-pat00199
가 주어졌을 때, 다음의 수학식 9와 같은 관계가 성립한다.
Figure 112021043125686-pat00200
따라서, 구간
Figure 112021043125686-pat00201
에서
Figure 112021043125686-pat00202
를 근사화한 다항식을 구하기 위해서는, 첫 번째로
Figure 112021043125686-pat00203
에서
Figure 112021043125686-pat00204
를 근사화한 다항식
Figure 112021043125686-pat00205
을 구하고,
Figure 112021043125686-pat00206
를 반영하여
Figure 112021043125686-pat00207
를 변환한 것을 스칼라
Figure 112021043125686-pat00208
와 곱하는 방식을 이용할 수 있다.
이러한 방식을 이용한다면 앞서 구했던 수학식 3의 첫 번째 회전인자 모음인
Figure 112021043125686-pat00209
를,
Figure 112021043125686-pat00210
인 구간에 대해서
Figure 112021043125686-pat00211
와 같이 다항식으로 근사화할 수 있다.
따라서,
Figure 112021043125686-pat00212
에 대해
Figure 112021043125686-pat00213
를 근사화한 결과는 수학식 3으로부터 다음의 수학식 10과 같이 표현할 수 있다.
Figure 112021043125686-pat00214
이때,
Figure 112021043125686-pat00215
,
Figure 112021043125686-pat00216
Figure 112021043125686-pat00217
이다.
다. 효율적인 합계(summation)를 위한 연산 순서 재배열 및 인자 분해
수학식 10을 참고하면 부분 푸리에 계수(partial Fourier coefficient)를 계산하기 위해 3가지 합계(summation)를 수행해야 함을 알 수 있다.
또한 수학식 10을 참고하면, 두 번째 줄에서 가장 안쪽의(innermost) 합계인
Figure 112021043125686-pat00218
이 세 번째 줄에서는 가장 바깥쪽 위치(outermost position)로 이동되면서,
Figure 112021043125686-pat00219
이 두 개의 독립적인 항인
Figure 112021043125686-pat00220
Figure 112021043125686-pat00221
으로 분해되었다. 이와 같이 합계의 순서를 바꾸고 인자를 분해함으로써 연산의 효율성을 높일 수 있다.
수학식 10에서 연산을 재배열한 결과 가장 안쪽에 위치한 합계인,
Figure 112021043125686-pat00222
에 대한 합계는 행렬곱에 해당된다. 그리고, 두 번째로 안쪽에 위치한 합계인,
Figure 112021043125686-pat00223
에 대한 합계는 복수의 DFT로 볼 수 있고, 마지막으로 가장 바깥쪽에 위치한 합계인,
Figure 112021043125686-pat00224
에 대한 합계는 내적(inner product)에 해당된다.
행렬
Figure 112021043125686-pat00225
Figure 112021043125686-pat00226
를 각각 다음의 수학식 11 및 12와 같이 정의하면, 수학식 10은 다음의 수학식 13과 같이 표현할 수 있다.
Figure 112021043125686-pat00227
Figure 112021043125686-pat00228
Figure 112021043125686-pat00229
행렬
Figure 112021043125686-pat00230
는 데이터 독립적(data-independent)이므로, 즉 입력 벡터
Figure 112021043125686-pat00231
의 영향을 받지 않으므로 사전에 계산될 수 있다. 앞서 정리 2의 수학식 6 부분에서 살펴본 바와 같이
Figure 112021043125686-pat00232
도 사전에 계산될 수 있다. 또한,
Figure 112021043125686-pat00233
를 안다면 행렬
Figure 112021043125686-pat00234
를 구성하는 다른 인자들인
Figure 112021043125686-pat00235
Figure 112021043125686-pat00236
도 사전에 계산될 수 있다.
따라서,
Figure 112021043125686-pat00237
에 대한 설정이 변경되지 않는다면, 상기 표 1에 기재된 PFT의 환경설정 단계(configuration phase)를 한 번만 수행하면, 어떤 입력 데이터
Figure 112021043125686-pat00238
에 대해서도 사전에 계산된 행렬
Figure 112021043125686-pat00239
를 다시 사용할 수 있다.
한편, 행렬곱
Figure 112021043125686-pat00240
Figure 112021043125686-pat00241
라고 한다면 수학식 13은 아래의 수학식 14와 같이 표현될 수 있다.
Figure 112021043125686-pat00242
각각의
Figure 112021043125686-pat00243
에 대해서, 합계
Figure 112021043125686-pat00244
는 크기
Figure 112021043125686-pat00245
인 DFT이다. 이에 대해서 FFT를
Figure 112021043125686-pat00246
번 수행하고 대응되는 푸리에 계수를
Figure 112021043125686-pat00247
라고 하면 다음의 수학식 15와 같이
Figure 112021043125686-pat00248
을 근사화할 수 있다.
Figure 112021043125686-pat00249
Figure 112021043125686-pat00250
Figure 112021043125686-pat00251
에 대한 주기
Figure 112021043125686-pat00252
인 주기 함수이므로,
Figure 112021043125686-pat00253
또는
Figure 112021043125686-pat00254
를 만족할 때 '
Figure 112021043125686-pat00255
modulo
Figure 112021043125686-pat00256
'에 대해서 위 계수를 사용할 수 있다. 따라서,
Figure 112021043125686-pat00257
Figure 112021043125686-pat00258
번째 푸리에 계수는
Figure 112021043125686-pat00259
에 대한
Figure 112021043125686-pat00260
Figure 112021043125686-pat00261
의 내적으로 근사화 될 수 있으며, 이어서 추가적인 회전인자인
Figure 112021043125686-pat00262
와의 곱셈을 수행할 수 있다. 이때,
Figure 112021043125686-pat00263
Figure 112021043125686-pat00264
는 사전 계산이 가능하다. 전체적인 계산 과정은 상기 표 2에 나타난 알고리즘과 같다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 3 및 도 4를 통해 설명된 실시예들에 따른 FPFT 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다. 예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 3 및 도 4를 통해 설명된 실시예들에 따른 FPFT 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 3 및 도 4를 통해 설명된 실시예들에 따른 FPFT 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
100: 컴퓨팅 장치 110: 입출력부
120: 저장부 130: 제어부
210: 입력 벡터 220: 변환 행렬
230: 전처리 행렬 240: 제1 중간 행렬
250: 제2 중간 행렬 260: 근사 벡터

Claims (12)

  1. 고속 부분 푸리에 변환(fast partial Fourier transform) 방법에 있어서,
    입력 벡터(
    Figure 112022112255004-pat00265
    ) 및 상기 입력 벡터(
    Figure 112022112255004-pat00266
    )에 대한 푸리에 계수를 구하고자 하는 출력 구간(
    Figure 112022112255004-pat00267
    )을 입력받는 단계; 및
    상기 입력 벡터(
    Figure 112022112255004-pat00268
    ) 및 상기 출력 구간(
    Figure 112022112255004-pat00269
    )에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
    Figure 112022112255004-pat00270
    )을 이용하여, 상기 출력 구간(
    Figure 112022112255004-pat00271
    )에 대한 상기 입력 벡터(
    Figure 112022112255004-pat00272
    )의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함하고,
    상기 근사화한 벡터를 구하는 단계는,
    입력 벡터(
    Figure 112022112255004-pat00329
    )에 대한 이산 푸리에 변환(DFT)을 쿨리-튜키 알고리즘에 따라 변환하여 2개의 회전인자 모음을 획득하고, 상기 획득된 회전인자에서 진동성이 작은 회전인자만을 추출하여 기저 지수 함수를 이용해 다항식을 근사화하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 전처리 행렬(
    Figure 112021043125686-pat00273
    )은 상기 입력 벡터(
    Figure 112021043125686-pat00274
    )의 크기(
    Figure 112021043125686-pat00275
    ), 상기 출력 구간을 특정하기 위한 정보(
    Figure 112021043125686-pat00276
    Figure 112021043125686-pat00277
    ), 인자(divisor)(
    Figure 112021043125686-pat00278
    ) 및 허용오차(
    Figure 112021043125686-pat00279
    )를 이용하여 사전에 계산되는 것을 특징으로 하는, 방법.
  3. 제2항에 있어서,
    상기 전처리 행렬(
    Figure 112021043125686-pat00280
    )은 다음의 알고리즘 1에 따라 계산되는 것을 특징으로 하는 방법.
    [알고리즘 1]
    Figure 112021043125686-pat00281
  4. 제2항에 있어서,
    상기 근사화한 벡터를 구하는 단계는,
    상기 입력 벡터(
    Figure 112021043125686-pat00282
    )로부터, 상기 전처리 행렬(
    Figure 112021043125686-pat00283
    )과 행렬곱이 가능한 형태의 변환 행렬(
    Figure 112021043125686-pat00284
    )을 구하는 단계;
    상기 변환 행렬(
    Figure 112021043125686-pat00285
    )과 상기 전처리 행렬(
    Figure 112021043125686-pat00286
    )의 행렬곱을 계산하여 제1 중간 행렬(
    Figure 112021043125686-pat00287
    )을 구하는 단계;
    제1 중간 행렬(
    Figure 112021043125686-pat00288
    )의 각 열에 대해 고속 푸리에 변환(FFT)을 수행하여 제2 중간 행렬을 구하는 단계; 및
    상기 제2 중간 행렬의 각 행에 대한 내적(inner product)을 계산함으로써 출력 구간에 대한 상기 입력 벡터(
    Figure 112021043125686-pat00289
    )의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 변환 행렬(
    Figure 112021043125686-pat00290
    )을 구하는 단계는,
    다음의 수학식 1에 따라 수행되는 것을 특징으로 하는 방법.
    [수학식 1]
    Figure 112021043125686-pat00291
  6. 제1항에 있어서,
    컴퓨터에 제1항에 기재된 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  7. 컴퓨팅 장치에 의해 수행되며, 제1항에 기재된 방법을 수행하기 위해 기록 매체에 저장된 컴퓨터 프로그램.
  8. 고속 부분 푸리에 변환(fast partial Fourier transform) 방법을 수행하기 위한 컴퓨팅 장치에 있어서,
    데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부;
    고속 부분 푸리에 변환을 수행하기 위한 프로그램 및 데이터가 저장되는 저장부; 및
    적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 고속 부분 푸리에 변환을 수행하는 제어부를 포함하며,
    상기 제어부는 상기 입출력부를 통해 입력 벡터(
    Figure 112022112255004-pat00292
    ) 및 상기 입력 벡터(
    Figure 112022112255004-pat00293
    )에 대한 푸리에 계수를 구하고자 하는 출력 구간(
    Figure 112022112255004-pat00294
    )을 입력받으면, 상기 프로그램을 실행시킴으로써 상기 입력 벡터(
    Figure 112022112255004-pat00295
    ) 및 상기 출력 구간(
    Figure 112022112255004-pat00296
    )에 대한 정보를 이용하여 사전에 계산된 전처리 행렬(
    Figure 112022112255004-pat00297
    )을 이용하여, 상기 출력 구간(
    Figure 112022112255004-pat00298
    )에 대한 상기 입력 벡터(
    Figure 112022112255004-pat00299
    )의 푸리에 계수를 근사화한 벡터를 구하고,
    상기 제어부는,
    입력 벡터(
    Figure 112022112255004-pat00330
    )에 대한 이산 푸리에 변환(DFT)을 쿨리-튜키 알고리즘에 따라 변환하여 2개의 회전인자 모음을 획득하고, 상기 획득된 회전인자에서 진동성이 작은 회전인자만을 추출하여 기저 지수 함수를 이용해 다항식을 근사화하는 것을 특징으로 하는 것을 특징으로 하는 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 제어부는 상기 입력 벡터(
    Figure 112021043125686-pat00300
    )의 크기(
    Figure 112021043125686-pat00301
    ), 상기 출력 구간을 특정하기 위한 정보(
    Figure 112021043125686-pat00302
    Figure 112021043125686-pat00303
    ), 인자(divisor)(
    Figure 112021043125686-pat00304
    ) 및 허용오차(
    Figure 112021043125686-pat00305
    )를 이용하여 사전에 상기 전처리 행렬(
    Figure 112021043125686-pat00306
    )을 계산하는 것을 특징으로 하는 컴퓨팅 장치.
  10. 제9항에 있어서,
    상기 제어부는 다음의 알고리즘 1에 따라 상기 전처리 행렬(B)을 계산하는 것을 특징으로 하는 컴퓨팅 장치.
    [알고리즘 1]
    Figure 112021043125686-pat00307
  11. 제9항에 있어서,
    상기 제어부는 상기 근사화한 벡터를 구함에 있어서,
    상기 입력 벡터(
    Figure 112021043125686-pat00308
    )로부터, 상기 전처리 행렬(
    Figure 112021043125686-pat00309
    )과 행렬곱이 가능한 형태의 변환 행렬(
    Figure 112021043125686-pat00310
    )을 구하고, 상기 변환 행렬(
    Figure 112021043125686-pat00311
    )과 상기 전처리 행렬(
    Figure 112021043125686-pat00312
    )의 행렬곱을 계산하여 제1 중간 행렬(
    Figure 112021043125686-pat00313
    )을 구하고, 제1 중간 행렬(
    Figure 112021043125686-pat00314
    )의 각 열에 대해 고속 푸리에 변환(FFT)을 수행하여 제2 중간 행렬을 구한 후, 상기 제2 중간 행렬의 각 행에 대한 내적(inner product)을 계산함으로써 출력 구간에 대한 상기 입력 벡터(
    Figure 112021043125686-pat00315
    )의 푸리에 계수를 근사화한 벡터를 구하는 것을 특징으로 하는 컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 제어부는 다음의 수학식 1에 따라 상기 변환 행렬()를 구하는 것을 특징으로 하는 컴퓨팅 장치.
    [수학식 1]
    Figure 112021043125686-pat00316


KR1020210048081A 2021-04-13 2021-04-13 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 KR102514264B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210048081A KR102514264B1 (ko) 2021-04-13 2021-04-13 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210048081A KR102514264B1 (ko) 2021-04-13 2021-04-13 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20220141680A KR20220141680A (ko) 2022-10-20
KR102514264B1 true KR102514264B1 (ko) 2023-03-24

Family

ID=83804734

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210048081A KR102514264B1 (ko) 2021-04-13 2021-04-13 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102514264B1 (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296045B2 (en) * 2004-06-10 2007-11-13 Hasan Sehitoglu Matrix-valued methods and apparatus for signal processing
WO2015165539A1 (en) * 2014-04-30 2015-11-05 Huawei Technologies Co., Ltd. Signal processing apparatus, method and computer program for dereverberating a number of input audio signals

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
John C. Bowman외 1 명, "The Partial Fast Fourier Transform", Journal of Scientific Computing volume 76, (2018.2.22.)*

Also Published As

Publication number Publication date
KR20220141680A (ko) 2022-10-20

Similar Documents

Publication Publication Date Title
US20200401872A1 (en) Systems and methods for vectorized fft for multi-dimensional convolution operations
US8363961B1 (en) Clustering techniques for large, high-dimensionality data sets
US7640284B1 (en) Bit reversal methods for a parallel processor
JP2021507335A (ja) 行列入力を行列プロセッサ用のベクトル化入力に変換するためのシステムおよび方法
US20190347544A1 (en) Computation device and method
US20110302371A1 (en) Method of operating a computing device to perform memoization
US20170206089A1 (en) Information processing apparatus and computational method
US9934199B2 (en) Digital filter device, digital filtering method, and storage medium having digital filter program stored thereon
EP3796190A1 (en) Memory device and method
US20170344589A1 (en) Output vector generation from feature vectors representing data objects of a physical system
KR102514264B1 (ko) 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치
US7657587B2 (en) Multi-dimensional fast fourier transform
KR102376492B1 (ko) 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법
Shi et al. A sequential multiple change-point detection procedure via VIF regression
WO2023045516A1 (zh) 执行fft的方法、装置及设备
US20230171084A1 (en) Appratus and method with homomorphic encryption
US20130307858A1 (en) Hilbert-huang transform data processing real-time system with 2-d capabilities
KR102447870B1 (ko) 텐서 분해 방법 및 이를 수행하기 위한 장치
US10002622B2 (en) Irregular pattern identification using landmark based convolution
US9792533B2 (en) Processing apparatus, processing method, and program for determining an image taking position
US11507371B2 (en) Column data driven arithmetic expression evaluation
US10853445B2 (en) Digital filter device, digital filtering method, and program recording medium
US20150100609A1 (en) Compression of time-varying simulation data
US9311274B2 (en) Approach for significant improvement of FFT performance in microcontrollers
US20200372095A1 (en) Fast fourier transform device, data sorting processing device, fast fourier transform processing method, and program recording medium

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant