Tuesday 13 March 2018

이동 평균 재귀 구현


나는 본질적으로 this. The 위와 같은 값의 배열을 가지고있다, 나는 실제 코드에서 밀리 세컨드 당 1 개의 값을 모으고 나는 시간의 시점 전에 가장 가까운 피크를 찾기 위해 쓴 알고리즘의 출력을 처리 할 필요가있다. 논리는 위의 예제에서 0 36이 실제 피크이기 때문에 실패합니다. 그러나 알고리즘은 뒤로보고 0으로 가장 낮은 숫자 0 25를 보게됩니다. 그 전에 0 24로 감소합니다. 목표는이 값을 사용하는 것입니다. 그리고 그들을 조금 부드럽게 할 알고리즘을 적용하여보다 선형적인 값을 갖도록합니다. 즉, jaggedy가 아닌 curvy가되도록 내 결과를 좋아합니다. 내 값에 지수 이동 평균 필터를 적용하라는 말을 들었습니까? 이렇게하면 수학 방정식을 읽는 것이 정말 어렵고, 코드를 훨씬 잘 처리 할 수 ​​있습니다. 배열에서 값을 처리하고 지수 이동 평균 계산을 적용하여 어떻게 할 수 있습니까? 2 월 8 일 12 시부 터 20시 27 분에 계산합니다. 기하 급수적 인 이동 평균. 튜닝 매개 변수가 필요합니다. Java 5 이상을 사용하는 것으로 가정하면 약간의 클래스가 필요합니다. 원하는 감쇄 매개 변수를 사용하여 초기화하려면 0에서 1 사이의 튜닝이 필요하고 평균을 사용하여 필터를 작성해야합니다. 일부 mathmatical 재발, 코드로 변환 할 때 알아야 할 것은 수학자가 배열에 인덱스를 쓰고 아래 첨자로 시퀀스를 작성한다는 것입니다. 다른 도움이되는 몇 가지 표기법도 있습니다. 그러나 EMA는 필요한만큼 간단합니다 하나의 오래된 값을 기억하는 것은 필요하지 않습니다. 복잡한 상태 배열은 필요하지 않습니다. 대답 2 월 8 일 12시 20 분 42 초. TKKocheran 일들이 간단 할 때 꽤 좋지 않음 새로운 순서로 시작한다면, 새로운 평균을 구하십시오. 평균 시퀀스는 경계 효과로 인해 비트 주변에서 점프 할 것입니다. 그러나 다른 이동 평균을 가진 시퀀스를 얻을 수도 있습니다. 그러나 좋은 이점은 이동 평균 논리를 평균에 포함시키고 실험을 방해하지 않고 실험 할 수 있다는 것입니다 그는 프로그램의 나머지 부분을 너무 많이 사용했습니다. Donal Fellows 2 월 9 일 12시 0 분 06. 귀하의 질문을 이해하는 데 어려움을 겪고 있습니다. 그러나 어쨌든 대답하려고 노력할 것입니다 .1 귀하의 알고리즘이 0 36 대신 0 25를 찾았다면 잘못되었습니다. 단조로운 증가 또는 감소를 가정하기 때문에 항상 잘못되거나 잘못 될 수 있습니다. 항상 올라가거나 항상 내려갑니다. 모든 데이터를 평균화하지 않으면 데이터 포인트 --- 제시 할 때 --- 비선형입니다. 값을 두 지점 사이에서 계산 한 다음 배열을 tmin에서 tmax로 슬라이스하고 그 부분 배열의 최대 값을 찾습니다 .2 이제 이동 평균의 개념은 매우 간단합니다. 다음 목록이 있다고 가정하십시오. 1 4, 1 5, 1 4, 1 5, 1 5 두 숫자의 평균을 취하여 부드럽게 할 수 있습니다. 1 45, 1 45, 1 45, 1 5 첫 번째 숫자는 1 5 및 1 4 초의 평균이고 첫 번째 숫자는 두 번째 새 목록입니다. 1 4 1과 3 5의 평균이고 두 번째의 이전 목록은 세 번째의 새로운 목록의 평균은 1 5와 1 4 4와 3의 평균입니다. 3 ~ 4 단계로 만들었습니다. 또는 n 데이터가 훨씬 더 매끄러운 지 확인하십시오. 직장에서 이동 평균을 보는 좋은 방법은 Google Finance로 이동하여 주식을 선택하는 것입니다. Tesla Motors는 매우 변동이 심한 TSLA를 시도하고 하단의 기술을 클릭하십시오. 차트 특정 기간에 이동 평균을 선택하고 지수 이동 평균을 사용하여 차이를 비교합니다. 지수 이동 평균은 이것에 대한 또 다른 노력이지만 이전 데이터를 새 데이터보다 가중치를 낮추는 방법으로 평활화를 뒤쪽으로 바이어스하는 방법입니다 Wikipedia 항목을 읽으십시오. 이것은 대답보다 더 많은 코멘트입니다. 하지만 작은 주석 상자는 작은 행운을 빕니다. 행운을 빌어 요. 수학에 문제가 있으면, 지수 대신 간단한 이동 평균을 사용할 수 있습니다. 당신이 얻는 결과는 마지막 x 항을 x로 나눈 것입니다. 검증되지 않은 의사 코드. 두 번째 데이터 점에있을 때 마지막 5 항의 평균을 명확하게 나타낼 수 있기 때문에 데이터의 시작과 끝 부분을 처리해야합니다. , 이 이동 평균 합계를 계산하는 가장 효율적인 방법은 가장 오래된 것입니다. 그러나 이것은 무엇이 일어나고 있는지에 대한 개념을 얻는 것입니다. 2 월 8 일 12시 20 분 41. The Scientist and Engineer 's Guide to Digital Signal Processing Steven W Smith, Ph DA 이동 평균 필터의 엄청난 장점은 매우 빠른 알고리즘으로 구현할 수 있다는 것입니다. 이 알고리즘을 이해하려면 입력 신호 x를 7 포인트 이동 평균 필터를 통해 출력 신호를 형성한다고 가정하십시오 , y y 50과 y 51의 두 인접 출력 포인트가 어떻게 계산되는지 살펴 봅니다. 이들은 거의 동일한 계산 포인트 x 48 ~ x 53을 y 50에 추가해야하고 y 51에 대해 다시 추가해야합니다. y 50이 이미 y 51을 계산하는 가장 효율적인 방법은 y 50을 사용하여 y 51을 찾은 다음 y y 52를 y 51에서 계산할 수있는 식으로 등등 y에서 첫 번째 점을 계산 한 후 다른 모든 점 단 하나의 덧셈과 뺄셈으로 찾을 수있다. per point 이것은 방정식에서 표현 될 수 있습니다. 이 방정식은 두 개의 데이터 소스를 사용하여 입력으로부터의 출력 점에서 각 점을 계산하고 출력으로부터 이전에 계산 된 점을 계산한다는 점에 유의하십시오. 이는 재귀 방정식이라고합니다. 이는 하나의 결과 계산은 미래의 계산에 사용됩니다. 재귀 용어는 특히 컴퓨터 과학에서 다른 의미를 가지고 있습니다. 19 장에서는 다양한 재귀 필터에 대해 자세히 설명합니다. 이동 평균 재귀 필터는 일반적인 재귀 필터와 매우 다릅니다. 특히 대부분의 재귀 필터 사인 곡선과 지수로 구성된 무한히 긴 임펄스 응답 IIR을 가짐 이동 평균의 임펄스 응답은 직사각형 펄스 유한 임펄스 응답 또는 FIR입니다. 이 알고리즘은 여러 가지 이유로 다른 디지털 필터보다 빠릅니다. 첫째, 두 개의 계산이 있습니다 포인트, 필터 커널의 길이에 관계없이 둘째, 더하기와 빼기가 유일한 수학입니다 연산이 필요하지만 대부분의 디지털 필터는 시간이 많이 걸리는 곱셈이 필요합니다. 세 번째, 색인 체계는 매우 간단합니다. 식 15-3의 각 색인은 필터링을 시작하기 전에 계산할 수있는 정수 상수를 더하거나 뺍니다. 알고리즘은 정수 표현을 사용하여 수행 할 수 있습니다. 사용되는 하드웨어에 따라 정수는 부동 소수점보다 훨씬 더 빠르게 처리 될 수 있습니다. 놀랍게도 정수 표현은이 알고리즘을 사용하는 부동 소수점보다 더 빠릅니다. 부동 소수점 산술로 인한 오류로 인해 예기치 않은 결과가 발생할 수 있습니다. 예를 들어, 10,000 샘플 신호가이 방법으로 필터링되고 있다고 가정합니다. 필터링 된 신호의 마지막 샘플에는 10,000 개의 누적 오차와 10,000 회의 누적 오차가 있습니다. 출력 신호에 나타납니다 표류 오프셋으로 정수 연산에 라운드 아웃 오류가 없으므로 정수가이 문제가 없습니다. 이 알고리즘에 부동 소수점을 사용해야하는 경우 표 15-2의 프로그램은 배정 밀도 누적 기 (double precision accumulator)를 사용하여이 드리프트를 제거하는 방법을 보여줍니다. 이동 평균은 필터로 사용됩니다. 이동 평균은 종종 노이즈 단순 이동 평균은 실제로 Finite Impulse Response FIR 필터로 인식되는 것은 아니지만 실제로는 신호 처리에서 가장 일반적인 필터 중 하나입니다. 필터로 처리하면 예를 들어 windowed-sinc 필터와 비교할 수 있습니다 저역 고주파 및 대역 통과 및 대역 거부 필터에 대한 기사를 참조하십시오. 이러한 필터의 주요 차이점은 이동 평균이 유용한 정보가 시간 도메인에 포함 된 신호에 적합하다는 것입니다. 평균화에 의한 평활화 측정이 가장 좋은 예입니다. 반면, Windowed-sinc 필터는 주파수 영역에서 강력한 성능을 보여 주며, 오디오 처리의 평준화가 일반적인 예입니다. 시간 영역과 필터의 두 영역 유형의 필터의 세부적인 비교 시간 영역과 주파수 영역 모두 중요한 데이터가있는 경우 이동 평균에 대한 변이를 볼 수 있습니다. 이동 평균의 가중 버전의 수가 더 낫습니다. 길이 N의 이동 평균은 일반적으로 구현 된대로 정의 할 수 있습니다. 현재 출력 샘플은 이전 N 샘플의 평균으로 필터로 표시됩니다. 이동 평균은 길이 N 및 높이 1N의 직사각형 펄스로 입력 시퀀스 xn의 컨볼 루션을 수행하여 펄스의 영역을 만들고 따라서 필터의 이득을 1로 만든다. 실제로는 N odd 이동 평균은 짝수 개의 샘플을 사용하여 계산할 수도 있지만 N에 홀수 값을 사용하면 N 샘플을 사용하는 필터의 지연이 exactl이기 때문에 필터의 지연이 샘플의 정수가된다는 이점이 있습니다 y N-1 2 이동 평균은 샘플의 정수로 이동하여 원본 데이터와 정확하게 정렬 할 수 있습니다. 시간 도메인. 이동 평균은 직사각형 펄스와의 컨볼루션이기 때문에 주파수 응답은 sinc 함수입니다. 그것은 sinc 펄스의 convolution이기 때문에 windowed-sinc 필터의 이중화와 같습니다. 이것은 직각 주파수 응답을 발생시킵니다. 이것은 주파수 영역에서 이동 평균을 좋지 않게 만드는 sinc 주파수 응답입니다. 따라서 시간 영역에서 매우 잘 수행됩니다. 따라서 빠른 단계 응답을 유지하는 동시에 잡음을 제거하기위한 데이터를 부드럽게하는 것이 완벽합니다. 그림 1. 그림 1 이동 평균 필터로 평활화. 전형적인 가산 백색 가우스 잡음 AWGN 종종 N 개의 샘플을 평균하는 것은 SNR을 sqrt N만큼 증가시키는 효과를 갖는다. 개별 샘플에 대한 잡음은 상관 관계가 없으므로 각 샘플을 다르게 취급 할 이유가 없다 따라서 각 샘플에 동일한 가중치를 부여하는 이동 평균은 주어진 스텝 응답 선명도에 대한 최대 노이즈 양을 제거합니다. FIR 필터이기 때문에 컨버전스를 통해 이동 평균을 구현할 수 있습니다. 다른 어떤 FIR 필터와 같은 효율성 또는 그것의 부족 그러나, 그것은 또한 매우 효율적인 방법으로 재귀 적으로 구현 될 수 있습니다. 정의에서 바로 따릅니다. 이 공식은 yn 및 yn 1에 대한 식의 결과입니다. 여기서 우리는 yn 1과 yn 사이의 변화가 xn 1 N이 끝 부분에 나타나는 여분의 용어 인 반면 x nN 1 N이라는 용어는 처음부터 제거된다는 것을 알아 차릴 수있다. 실제 적용에서는 종종 다음과 같이 나눗셈을 생략 할 수있다. N 다른 장소에서 N의 결과 이득을 보상함으로써 각 용어에 대한 N이 재귀 구현은 회선보다 훨씬 빠릅니다. y의 각 새로운 값은 str에 필요한 N 개의 추가 대신 두 번의 덧셈만으로 계산할 수 있습니다 미리 정의 된 구현을 재귀 적으로 구현할 경우, 반올림 오류가 누적 될 수 있습니다. 이것은 응용 프로그램에서 문제가 될 수도 있고 그렇지 않을 수도 있지만, 이 재귀 구현은 실제로 정수 구현으로 더 잘 작동합니다. 부동 소수점 숫자가있는 경우 이것은 부동 소수점 구현이 일반적으로 더 간단하기 때문에 매우 드뭅니다. 이 모든 결론은 신호 처리 응용 프로그램에서 단순 이동 평균 필터의 유용성을 결코 과소 평가해서는 안된다는 것입니다. 필터 설계 도구. 이 기사 필터 설계 도구로 N을 다른 값으로 실험하고 결과 필터를 시각화하십시오. 지금 사용해보십시오.

No comments:

Post a Comment