KR102514264B1 - 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 - Google Patents
고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix 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
Description
본 명세서에서 개시되는 실시예들은 푸리에 변환(Fourier transform)에 관한 것으로서, 구체적으로 이산적인 데이터에 대해서 일부의 푸리에 계수(Fourier coefficient)만을 구하고자 할 때 빠르게 계산을 수행할 수 있는 방법 및 이를 수행하기 위한 컴퓨팅 장치에 관한 것이다.
푸리에 변환(Fourier transform)은 디지털 신호 처리, 이미지와 영상의 압축, CT 스캐너 및 MRI 분석, 데이터 이상 감지 등의 기술 분야에서 활발하게 이용되고 있는 알고리즘으로, 최근 급격한 성장세를 지속하고 있는 5G 네트워크와 데이터 산업 시장 전반에 걸쳐 상당한 영향력을 가지고 있는 기술이며, 고속 푸리에 변환(Fast Fourier Transform, 이하 'FFT')은 이산적인 데이터에 대한 푸리에 변환을 고속으로 수행하는 기술이다.
기존의 FFT에 따르면 일부의 푸리에 계수들만을 구하고자 할 때에도 전체 푸리에 계수들을 모두 계산해야만 해 비효율적이며, 이러한 문제를 해결하기 위해 제안된 방식들은 구하고자 하는 푸리에 계수의 수가 아주 작을 때에만 활용할 수 있는 한계가 있다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 이산적인 입력 데이터에 대한 푸리에 계수를 구함에 있어서, 전체 푸리에 계수들 중 일부만을 구하되, 구하고자 하는 푸리에 계수의 수가 입력 데이터에 비해 아주 작지 않은 경우에도 계산 속도를 효율적으로 단축시킬 수 있는 푸리에 변환 방법을 제공하고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면 고속 부분 푸리에 변환(fast partial Fourier transform) 방법은, 입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받는 단계 및 상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 컴퓨터 프로그램으로서, 고속 부분 푸리에 변환 방법은, 입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받는 단계 및 상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서, 고속 부분 푸리에 변환 방법은, 입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받는 단계 및 상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 고속 부분 푸리에 변환 방법을 수행하기 위한 컴퓨팅 장치는, 데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부, 고속 부분 푸리에 변환을 수행하기 위한 프로그램 및 데이터가 저장되는 저장부 및 적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 고속 부분 푸리에 변환을 수행하는 제어부를 포함하며, 상기 제어부는 상기 입출력부를 통해 입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받으면, 상기 프로그램을 실행시킴으로써 상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 특정 출력 구간에 대한 입력 벡터의 푸리에 계수를 구함에 있어서, 입력 벡터 및 출력 구간에 대한 정보를 이용하여 사전에 계산된 전처리 행렬을 이용함으로써 연산량을 줄이는 효과를 기대할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 고속 부분 푸리에 변환을 수행하기 위한 컴퓨팅 장치의 구성을 도시한 도면이다.
도 2는 일 실시예에 따른 고속 부분 푸리에 변환을 수행하는 과정을 설명하기 위한 도면이다.
도 3 및 도 4는 일 실시예에 따른 고속 부분 푸리에 변환 방법을 설명하기 위한 순서도들이다.
도 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는 임의의 벡터에 대해서 특정 구간에서의 푸리에 계수에 대한 근사 벡터를 구하기 위한 것이며, 좀 더 상세하게는 크기가 인 복소 벡터(complex-valued vector) 가 (입력 데이터로서) 주어졌을 때, 구간 에서의 에 대한 푸리에 계수에 대한 근사 벡터를 구하기 위한 것이다. 이때, 은 음수가 아닌 정수(non-negative integer)이고, 는 정수(integer)이다.
FPFT는 크게 '전처리 단계'와 '계산 단계'로 구성되며 각각의 단계에 대해서 아래에서 자세히 설명한다.
1. 전처리 단계
입력과 출력에 대한 정보로부터 필요한 연산의 일부를 사전에 수행하는 단계이다.
전처리 단계를 수행하기 위해 필요한 정보는, 입력 벡터 의 크기 , 출력 구간을 특정하기 위한 정보 및 (이때, 출력 구간은 로 특정됨), 인자(divisor) , 허용오차(tolerance) 이다.
전처리 단계를 수행함에 있어서, 사전에 계산된 및 를 이용하며, 전처리 단계를 수행하기 위한 알고리즘 1을 다음의 표 1에 나타내었다. 및 를 사전에 계산하는 방법을 비롯해 알고리즘 1에 대한 자세한 설명은 아래에서 '연산 이론' 부분에 기재하였다.
도 2를 참고하면, 상기 알고리즘 1에 따라 입력 벡터(210) 및 출력 구간에 대한 정보를 이용하여 전처리 행렬(230)을 사전에 계산할 수 있다.
이렇게 계산된 전처리 행렬(230)은 입력 벡터의 크기와 출력 구간만 동일하다면, 임의의 입력 벡터에 대해서 푸리에 계수의 근사 벡터를 구할 때 사용될 수 있다. 따라서, 런타임 동안에 수행해야 하는 연산량을 줄일 수 있다.
2. 계산 단계
계산 단계에서 수행되는 프로세스들을 정리하면 다음과 같다.
1) 로부터 변환 행렬 (220)를 구한다. 이때, 사전 계산된 전처리 행렬의 행의 개수를 이용하여 변환 행렬(220)을 구하는데, 그에 따라 변환 행렬(220)은 전처리 행렬(230)과 행렬곱이 가능한 형태가 된다.
계산 단계를 수행하기 위한 알고리즘 2를 다음의 표 2에 나타내었다. 알고리즘 2와 관련한 자세한 설명은 아래에서 '연산 이론' 부분에 기재하였다.
이하에서는 상술한 바와 같은 컴퓨팅 장치(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)
진동성이
작은
회전인자의
추출
먼저 진동성이 작은 회전인자를 찾는 방법에 대해서 설명하면 다음과 같다.
은 음이 아닌 정수이면서 를 만족한다고 할 때, 인 구간에 대해서 을 구하는 경우를 생각해 보면, 의 지수는 에서 사이의 범위에 존재하고, 의 지수는 에서 사이의 범위에 존재하는데, 이므로 첫 번째 회전인자 모음이 두 번째 회전인자 모음에 비해 상대적으로 작은 진동수의 회전인자들을 포함하고 있음을 알 수 있다.
일반적으로, 작은 진동수의 함수들을 다항식으로 근사화할 경우 더 좋은 근사화 결과를 얻을 수 있다. 따라서, 첫 번째 회전인자 모듬에 포함된 회전인자들을 다항함수로 근사화한다. 또한 이때, 수학식 1의 첫 번째 항을 다음의 수학식 3과 같이 조금 변경함으로써 근사화 연산의 복잡도를 줄일 수 있다.
따라서, 수학식 3에서의 첫 번째 회전인자 모음에 포함된 회전인자들이, 수학식 2에서의 첫 번째 회전인자 모음에 포함된 회전인자들에 비해 진동성이 더 작다.
(2) 기저 지수 함수(base exponential function)의 이용
수학식 3에서의 첫 번째 회전인자 모음은 개의 지수함수들로 구성된다. 각각의 지수함수에 대해서 근사화를 수행할 수도 있지만, 이렇게 할 경우 계산에 많은 시간이 소요된다. 따라서, 연산량을 감소시키기 위해 다음과 같은 프로세스를 이용한다.
3)번 프로세스에 대해서 구체적으로 설명하면 다음과 같다.
에서 를 근사화한 다항식 를 얻었다고 가정한다. 이때, 및 는 0이 아닌 실수다. 인 또 다른 지수 함수 가 있다고 할 때, 이기 때문에 리스케일링(re-scaling)된 다항 함수 는 구간 에서 를 근사화하는 것이다.
이러한 사실로부터 다음을 알 수 있다.
따라서, 기저 지수 함수를 고정한다면 해당 기저 지수 함수를 근사화한 다항식을 사전에 구해놓을 수 있고, 따라서 FDFT를 수행하는 런타임(run-time) 동안에 수행해야 하는 근사화 연산을 줄일 수 있다.
몇 가지 정리(definition 1 및 2)를 한 후에 이에 대해서 더 자세히 설명한다.
정리 1 (definition 1)
정리 2 (definition 2)
또한, 위 범위에 대응되는 다항식을 아래의 수학식 6과 같이 표현할 수 있다.
첫 번째로 최소극대화(minimax) 알고리즘을 이용하여, 몇몇의 오차한계 와 양의 정수 에 대해서 및 를 사전 계산할 수 있다. 그리고 , , 그리고 가 주어졌을 때, 를 만족하는 의 최소값을 찾을 수 있다.
나. 목표구간(target range)을 임의로 설정하는 방법
지금까지는 의 구간에 속한 에 대한 를 근사화하는 방법에 대해서 설명했다. 이제부터는 푸리에 계수를 구하고자 하는 구간을 '목표구간(target range)'이라고 하고, 는 를 의미한다고 가정한다. (이때, ) 위에서 살펴본 방법들은 으로 목표구간의 중심이 설정되었을 때 사용 가능한 방법들이다.
알고리즘을 조금만 변경한다면 목표구간의 중심이 임의로 설정되더라도 사용 가능하다. 예를 들어, 다음과 같은 방법을 생각할 수 있다. 크기 의 복소벡터 가 주어지고, 벡터 는 를 의미한다고 가정할 때, 및 의 푸리에 계수는 다음의 수학식 8의 관계를 만족한다.
따라서, 에 대한 를 계산한다면 에 대한 도 구할 수 있다. 그런데 이 방법은, 의 계산으로 인해 추가적인 개의 곱셈을 필요로 한다. 런타임 동안에 추가적인 연산 프로세스를 수행하지 않도록 하기 위해서 다음과 같은 보조정리(lemma)를 이용할 수 있다.
보조정리 1 (lemma 1)
다. 효율적인 합계(summation)를 위한 연산 순서 재배열 및 인자 분해
수학식 10을 참고하면 부분 푸리에 계수(partial Fourier coefficient)를 계산하기 위해 3가지 합계(summation)를 수행해야 함을 알 수 있다.
또한 수학식 10을 참고하면, 두 번째 줄에서 가장 안쪽의(innermost) 합계인 이 세 번째 줄에서는 가장 바깥쪽 위치(outermost position)로 이동되면서, 이 두 개의 독립적인 항인 및 으로 분해되었다. 이와 같이 합계의 순서를 바꾸고 인자를 분해함으로써 연산의 효율성을 높일 수 있다.
수학식 10에서 연산을 재배열한 결과 가장 안쪽에 위치한 합계인, 에 대한 합계는 행렬곱에 해당된다. 그리고, 두 번째로 안쪽에 위치한 합계인, 에 대한 합계는 복수의 DFT로 볼 수 있고, 마지막으로 가장 바깥쪽에 위치한 합계인, 에 대한 합계는 내적(inner product)에 해당된다.
행렬 는 데이터 독립적(data-independent)이므로, 즉 입력 벡터 의 영향을 받지 않으므로 사전에 계산될 수 있다. 앞서 정리 2의 수학식 6 부분에서 살펴본 바와 같이 도 사전에 계산될 수 있다. 또한, 를 안다면 행렬 를 구성하는 다른 인자들인 및 도 사전에 계산될 수 있다.
따라서, 에 대한 설정이 변경되지 않는다면, 상기 표 1에 기재된 PFT의 환경설정 단계(configuration phase)를 한 번만 수행하면, 어떤 입력 데이터 에 대해서도 사전에 계산된 행렬 를 다시 사용할 수 있다.
는 에 대한 주기 인 주기 함수이므로, 또는 를 만족할 때 ' modulo '에 대해서 위 계수를 사용할 수 있다. 따라서, 의 번째 푸리에 계수는 에 대한 및 의 내적으로 근사화 될 수 있으며, 이어서 추가적인 회전인자인 와의 곱셈을 수행할 수 있다. 이때, 및 는 사전 계산이 가능하다. 전체적인 계산 과정은 상기 표 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: 근사 벡터
120: 저장부 130: 제어부
210: 입력 벡터 220: 변환 행렬
230: 전처리 행렬 240: 제1 중간 행렬
250: 제2 중간 행렬 260: 근사 벡터
Claims (12)
- 고속 부분 푸리에 변환(fast partial Fourier transform) 방법에 있어서,
입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받는 단계; 및
상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함하고,
상기 근사화한 벡터를 구하는 단계는,
입력 벡터()에 대한 이산 푸리에 변환(DFT)을 쿨리-튜키 알고리즘에 따라 변환하여 2개의 회전인자 모음을 획득하고, 상기 획득된 회전인자에서 진동성이 작은 회전인자만을 추출하여 기저 지수 함수를 이용해 다항식을 근사화하는 단계를 포함하는 방법. - 제2항에 있어서,
상기 근사화한 벡터를 구하는 단계는,
상기 입력 벡터()로부터, 상기 전처리 행렬()과 행렬곱이 가능한 형태의 변환 행렬()을 구하는 단계;
상기 변환 행렬()과 상기 전처리 행렬()의 행렬곱을 계산하여 제1 중간 행렬()을 구하는 단계;
제1 중간 행렬()의 각 열에 대해 고속 푸리에 변환(FFT)을 수행하여 제2 중간 행렬을 구하는 단계; 및
상기 제2 중간 행렬의 각 행에 대한 내적(inner product)을 계산함으로써 출력 구간에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 단계를 포함하는 것을 특징으로 하는 방법. - 제1항에 있어서,
컴퓨터에 제1항에 기재된 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체. - 컴퓨팅 장치에 의해 수행되며, 제1항에 기재된 방법을 수행하기 위해 기록 매체에 저장된 컴퓨터 프로그램.
- 고속 부분 푸리에 변환(fast partial Fourier transform) 방법을 수행하기 위한 컴퓨팅 장치에 있어서,
데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부;
고속 부분 푸리에 변환을 수행하기 위한 프로그램 및 데이터가 저장되는 저장부; 및
적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 고속 부분 푸리에 변환을 수행하는 제어부를 포함하며,
상기 제어부는 상기 입출력부를 통해 입력 벡터() 및 상기 입력 벡터()에 대한 푸리에 계수를 구하고자 하는 출력 구간()을 입력받으면, 상기 프로그램을 실행시킴으로써 상기 입력 벡터() 및 상기 출력 구간()에 대한 정보를 이용하여 사전에 계산된 전처리 행렬()을 이용하여, 상기 출력 구간()에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하고,
상기 제어부는,
입력 벡터()에 대한 이산 푸리에 변환(DFT)을 쿨리-튜키 알고리즘에 따라 변환하여 2개의 회전인자 모음을 획득하고, 상기 획득된 회전인자에서 진동성이 작은 회전인자만을 추출하여 기저 지수 함수를 이용해 다항식을 근사화하는 것을 특징으로 하는 것을 특징으로 하는 컴퓨팅 장치. - 제9항에 있어서,
상기 제어부는 상기 근사화한 벡터를 구함에 있어서,
상기 입력 벡터()로부터, 상기 전처리 행렬()과 행렬곱이 가능한 형태의 변환 행렬()을 구하고, 상기 변환 행렬()과 상기 전처리 행렬()의 행렬곱을 계산하여 제1 중간 행렬()을 구하고, 제1 중간 행렬()의 각 열에 대해 고속 푸리에 변환(FFT)을 수행하여 제2 중간 행렬을 구한 후, 상기 제2 중간 행렬의 각 행에 대한 내적(inner product)을 계산함으로써 출력 구간에 대한 상기 입력 벡터()의 푸리에 계수를 근사화한 벡터를 구하는 것을 특징으로 하는 컴퓨팅 장치.
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)
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 |
-
2021
- 2021-04-13 KR KR1020210048081A patent/KR102514264B1/ko active IP Right Grant
Non-Patent Citations (1)
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 |