초록 진술 이야기

진동. 고조파 진동

고조파 기계적 진동의 여기

생기

설명

진동 시스템이 어떤 식으로든 평형 상태에서 벗어나 그 자체로 방치되면 시스템에 마찰이 없고 위치 에너지가 일반화된 좌표(소위 자유 또는 자연 진동). 시스템을 평형 상태에서 제거하려면 시스템에 에너지를 공급해야 합니다. 이를 위해서는 시스템을 평형 위치에서 옮기거나 속도를 높이거나 두 가지를 동시에 수행해야 합니다. 뉴턴 점성 마찰이 있는 경우 진동 시스템은 조화 진동을 수행할 수도 있지만 조화 추진력(소위 강제 진동)의 영향을 받는 경우에만 가능합니다.

자유로운 움직임이 다음과 같은 기능으로 설명되는 기계적 진동 시스템을 고려해 보겠습니다.

x(t) = A cos (w t + a) . (1)

그러한 시스템을 이라고 합니다. 고조파 발진기. 함수 (1)은 소위 고조파 진동을 설명합니다. 여기서 양수 값 A를 진동 진폭이라고 하고, w는 원형 또는 순환 주파수입니다. 기능

j = wt + a (2)

을 진동 위상이라고 하고 a 값을 초기 위상이라고 합니다. 진동 주기는 다음 관계에 따라 주파수와 관련됩니다.

T = 2p/w. (삼)

함수 그래프는 그림 1에 나와 있습니다. 1.

고조파 진동에 대한 시간에 따른 좌표의 의존성

쌀. 1

함수 (1)이 해결책입니다. 미분 방정식두 번째 순서

d 2 x /dt 2 + w 2 x = 0, (4)

이는 고려 중인 시스템의 동작을 결정하는 일부 물리적 법칙(보통 뉴턴의 제2법칙 또는 곡선 일반 좌표를 사용하는 경우 오일러-라그랑주 방정식 또는 해밀턴 방정식과 같은 결과)을 표현합니다. 진동의 진폭과 초기 위상은 초기 조건에서 찾을 수 있습니다.

x(0) = xo ; d x(0) /dt = v o ,

이는 시간 t = 0에서 진동 시스템의 상태를 결정합니다. 이러한 조건에서 x o 및 v o는 임의의 상수입니다. 초기 조건은 다음 공식으로 이어집니다.

A = sqrt (x o 2 + (v o / k) 2 ) ; tg a = - v o / w x o .

진동 시스템에 대한 외부 영향은 감소된 힘 f = f(t)로 설명할 수 있습니다. 을 위한 스프링 진자감소된 힘 f = F(t)/m, 여기서 F는 외부 힘입니다. 이 경우 함수 x = x(t)는 다음 방정식을 충족합니다.

d 2 x /dt 2 + 2 b dx /dt + w o 2 x = f(t) . (5)

이 방정식의 왼쪽에 있는 두 번째 항은 움직이는 물체에 대한 마찰의 영향을 설명합니다. 이 경우 신체의 자유 진동은 조화롭지 않습니다. 감소된 힘 f = f(t)를 시간의 조화 함수로 둡니다. 즉 법에 따라 시간에 따라 다릅니다.

f (t) = f m cos W t,

여기서 f m은 구동력의 진폭이고,

W는 변화의 빈도입니다.

이 경우 강제 진동은 다음 함수로 설명됩니다.

x(t) = A cos(Wt + a),

저것들. 구동력의 주파수 W를 갖는 조화 진동을 나타냅니다. 강제 진동의 진폭 A는 다음 공식에 따라 주파수 W에 따라 달라집니다.

A(W) = fm / sqrt ((w o 2 - W 2 ) 2 + 4b 2 W 2 ) .

강제 진동 a의 초기 단계는 공식에 의해 결정됩니다

a = - arctg (2 bW / (w o 2 - W 2 )).

타이밍 특성

개시 시간(-3에서 1까지 로그);

수명(13에서 15까지의 로그 tc)

성능 저하 시간(-4에서 -3까지의 로그 td)

최적의 개발 시간(-3에서 -2까지의 로그 tk)

초기 위상을 선택하면 고조파 진동을 설명할 때 사인 함수에서 코사인 함수로 이동할 수 있습니다.

차동 형태의 일반화된 고조파 진동:

조화 법칙에 따라 자유 진동이 발생하려면 몸체를 평형 위치로 되돌리려는 힘이 평형 위치에서 몸체의 변위에 비례하고 변위의 반대 방향으로 향해야 합니다.

진동체의 질량은 어디에 있습니까?

조화진동이 존재할 수 있는 물리계를 물리계라고 한다. 고조파 발진기,고조파 진동 방정식은 다음과 같습니다. 고조파 발진기 방정식.

1.2. 진동 추가

시스템이 서로 독립적인 두 개 또는 여러 개의 진동에 동시에 참여하는 경우가 종종 있습니다. 이러한 경우 진동이 서로 중첩(추가)되어 생성되는 복잡한 진동 운동이 형성됩니다. 분명히 진동을 추가하는 경우는 매우 다양할 수 있습니다. 이는 추가된 진동 수뿐만 아니라 진동 매개변수, 주파수, 위상, 진폭 및 방향에 따라 달라집니다. 진동을 추가하는 가능한 다양한 사례를 모두 검토하는 것은 불가능하므로 개별 사례만 고려하도록 제한하겠습니다.

하나의 직선을 따라 향하는 고조파 진동 추가

동일한 주기의 동일한 방향 진동을 추가하지만 초기 위상과 진폭이 다른 것을 고려해 보겠습니다. 추가된 진동의 방정식은 다음 형식으로 제공됩니다.

변위는 어디에 있고 어디에 있습니까? - 진폭 접힌 진동의 초기 단계입니다.

그림 2.

진폭의 벡터와 각도 및 축에 추가된 진동이 플롯되는 벡터 다이어그램(그림 2)을 사용하여 결과 진동의 진폭을 결정하는 것이 편리하며, 평행사변형 규칙에 따라 진폭 벡터 전체 진동이 얻어집니다.

벡터 시스템(평행사변형)을 균일하게 회전하고 벡터를 축에 투영하는 경우 , 그런 다음 그들의 투영은 주어진 방정식에 따라 조화 진동을 수행합니다. 상호 배치벡터이며 동시에 변경되지 않으므로 결과 벡터 투영의 진동 동작도 조화됩니다.

이로부터 전체 운동은 주어진 순환 주파수를 갖는 조화 진동이라는 결론이 나옵니다. 진폭 계수를 결정합시다 결과적인 진동. 모서리로(평행사변형의 반대 각도가 같음)

따라서,

여기에서: .

코사인 정리에 따르면,

결과 진동의 초기 단계는 다음에서 결정됩니다.

위상과 진폭의 관계를 통해 결과 이동의 진폭과 초기 위상을 찾고 방정식을 작성할 수 있습니다.

비트

추가된 두 진동의 주파수가 서로 거의 다르지 않은 경우를 고려하고 진폭은 동일하고 초기 위상은 다음과 같습니다.

다음 방정식을 분석적으로 추가해 보겠습니다.

변신하자

쌀. 삼.
천천히 변하기 때문에 양은 단어의 완전한 의미에서 진폭이라고 할 수 없습니다(진폭은 일정한 양입니다). 일반적으로 이 값을 가변 진폭이라고 부를 수 있습니다. 이러한 진동의 그래프가 그림 3에 나와 있습니다. 추가된 진동은 진폭은 동일하지만 주기가 다르며 주기도 조금씩 다릅니다. 이러한 진동이 합쳐지면 비트가 관찰됩니다. 초당 비트 수는 추가된 진동의 주파수 차이에 의해 결정됩니다.

진동수와 진동이 서로 가까울 경우 두 개의 소리굽쇠가 소리를 낼 때 박동을 관찰할 수 있습니다.

상호 수직 진동 추가

허락하다 재료 포인트두 개의 서로 수직인 방향에서 동일한 주기로 발생하는 두 개의 고조파 진동에 동시에 참여합니다. 직교 좌표계는 점의 평형 위치에 원점을 배치하여 이러한 방향과 연관될 수 있습니다. 및 축을 따라 점 C의 변위를 각각 및 . (그림 4).

몇 가지 특별한 경우를 고려해 보겠습니다.

1). 진동의 초기 단계는 동일합니다.

두 진동의 초기 단계가 0이 되도록 시작 시점을 선택하겠습니다. 그런 다음 축을 따른 변위는 다음 방정식으로 표현될 수 있습니다.

이러한 평등을 항으로 나누어 점 C의 궤적에 대한 방정식을 얻습니다.
또는 .

결과적으로, 서로 수직인 두 개의 진동이 추가된 결과, 점 C는 좌표 원점을 통과하는 직선 세그먼트를 따라 진동합니다(그림 4).

쌀. 4.
2). 초기 위상차는 다음과 같습니다. :

이 경우 진동 방정식의 형식은 다음과 같습니다.

점 궤적 방정식:

결과적으로 점 C는 좌표 원점을 통과하는 직선 세그먼트를 따라 진동하지만 첫 번째 경우와는 다른 사분면에 위치합니다. 진폭 고려된 두 경우 모두 결과 진동은 다음과 같습니다.

3). 초기 위상차는 다음과 같습니다. .

진동 방정식의 형식은 다음과 같습니다.

첫 번째 방정식을 로 나누고, 두 번째 방정식을 다음으로 나눕니다.

두 등식을 모두 제곱하고 더해 봅시다. 진동점의 결과 이동 궤적에 대해 다음 방정식을 얻습니다.

진동점 C는 반축이 있는 타원을 따라 이동합니다. 진폭이 동일하면 전체 동작의 궤적은 원이 됩니다. 일반적인 경우에는 , 그러나 다중, 즉 , 상호 수직 진동을 추가하면 진동 점이 Lissajous 도형이라는 곡선을 따라 이동합니다.

리사쥬 피규어

리사쥬 피규어– 서로 수직인 두 방향에서 두 개의 고조파 진동을 동시에 수행하는 점에 의해 그려진 닫힌 궤적입니다.

프랑스 과학자 Jules Antoine Lissajous가 처음 연구했습니다. 그림의 모양은 두 진동의 주기(주파수), 위상 및 진폭 간의 관계에 따라 달라집니다.(그림 5).

그림 5.

두 기간이 동일한 가장 간단한 경우 그림은 타원이며, 위상차가 있으면 직선 세그먼트로 변질되고 위상차와 진폭이 같으면 원으로 변합니다. 두 진동의 주기가 정확히 일치하지 않으면 위상차가 항상 변하고 그 결과 타원이 항상 변형됩니다. 상당히 다른 기간에는 Lissajous 수치가 관찰되지 않습니다. 그러나 기간이 정수로 관련되어 있는 경우 두 기간의 최소 배수에 해당하는 기간이 지나면 이동 지점이 다시 동일한 위치로 돌아갑니다. 즉, 보다 복잡한 모양의 리사주 수치가 얻어집니다.
Lissajous 수치는 중심이 원점과 일치하는 직사각형에 맞고 측면은 좌표축과 평행하며 진동 진폭과 동일한 거리에 양쪽에 위치합니다 (그림 6).

조화진동 방정식

고조파 진동 방정식은 시간에 대한 신체 좌표의 의존성을 설정합니다.

초기 순간의 코사인 그래프는 최대값을 가지며, 사인 그래프는 초기 순간의 0 값을 갖습니다. 평형 위치에서 진동을 조사하기 시작하면 진동은 정현파를 반복합니다. 최대 편차 위치에서 진동을 고려하기 시작하면 진동은 코사인으로 설명됩니다. 또는 그러한 진동은 초기 위상을 갖는 사인 공식으로 설명될 수 있습니다.

고조파 진동 중 속도 및 가속도 변화

뿐만 아니라 신체의 좌표는 사인이나 코사인의 법칙에 따라 시간이 지남에 따라 변합니다. 그러나 힘, 속도, 가속도와 같은 양도 비슷하게 변합니다. 힘과 가속도는 진동체가 변위가 최대인 극한 위치에 있을 때 최대가 되고, 몸체가 평형 위치를 통과할 때 0이 됩니다. 반대로 극한 위치에서의 속도는 0이고 신체가 평형 위치를 통과하면 최대 값에 도달합니다.

진동을 코사인 법칙으로 표현하면

진동을 사인법칙에 따라 설명하면

최대 속도 및 가속도 값

의존성 방정식을 분석한 결과 v(t) 및 a(t), 삼각 계수가 1 또는 -1인 경우 속도와 가속도가 최대 값을 취하는 것으로 추측할 수 있습니다. 공식에 의해 결정됨

고조파 진동은 인수에 대한 의존성이 사인 또는 코사인 함수의 특성을 갖는 모든 양의주기적인 변화 현상입니다. 예를 들어 수량은 다음과 같이 조화롭게 진동하고 시간이 지남에 따라 변경됩니다.

여기서 x는 변화하는 양의 값이고, t는 시간이고, 나머지 매개변수는 일정합니다. A는 진동의 진폭, Ω는 진동의 순환 주파수, 는 진동의 전체 위상, 은 진동의 초기 위상입니다.

차동 형태의 일반화된 고조파 진동

(이 미분 방정식에 대한 중요한 해결책은 순환 주파수를 갖는 조화 진동입니다)

진동의 종류

    시스템이 평형 위치에서 제거된 후 시스템 내부 힘의 영향으로 자유 진동이 발생합니다. 자유 진동이 고조파가 되려면 진동 시스템이 선형이어야 하고(선형 운동 방정식으로 설명됨) 에너지 소산이 없어야 합니다(후자는 감쇠를 유발함).

    강제 진동은 외부 주기력의 영향으로 발생합니다. 조화를 이루려면 진동 시스템이 선형(선형 운동 방정식으로 설명됨)이고 외부 힘 자체가 시간이 지남에 따라 조화 진동으로 변하는 것(즉, 이 힘의 시간 의존성이 정현파임)이면 충분합니다. .

고조파 방정식

방정식 (1)

시간 t에 대한 변동 값 S의 의존성을 제공합니다. 이것은 명시적인 형태의 자유 조화 진동 방정식입니다. 그러나 일반적으로 진동 방정식은 이 방정식을 미분 형식으로 다르게 표현한 것으로 이해됩니다. 명확성을 위해 방정식 (1)을 다음 형식으로 취하겠습니다.

시간에 관해 두 번 미분해 보겠습니다.

다음과 같은 관계가 성립함을 알 수 있습니다.

이는 자유 조화 진동 방정식(미분 형태)이라고 합니다. 방정식 (1)은 미분 방정식 (2)의 해입니다. 식 (2)는 2차 미분방정식이므로 완전한 해를 얻기 위해서는 두 가지 초기 조건이 필요하다(즉, 식 (1)에 포함된 상수 A와   결정; 예를 들어, t = 0에서 진동 시스템의 위치와 속도입니다.

수학 진자는 진동자로서, 균일한 중력장에 있는 무중력, 신장할 수 없는 실이나 무중력 막대 위에 위치한 물질 점으로 구성된 기계 시스템입니다. 자유 낙하 가속도 g를 갖는 균일한 중력장에 움직이지 않고 매달려 있는 길이 l의 수학 진자의 작은 자연 진동 주기는 다음과 같습니다.

진자의 진폭과 질량에 의존하지 않습니다.

물리적 진자는 이 물체의 질량 중심이 아닌 점 또는 힘의 작용 방향에 수직인 고정 축을 기준으로 모든 힘의 장에서 진동하는 견고한 몸체인 진동자입니다. 이 몸의 질량 중심을 통과합니다.

푸리에 변환과 디지털 신호 처리(DSP)와 같은 모든 종류의 아름다움에 대한 여러 기사가 허브에 있었지만 경험이 없는 사용자에게는 이 모든 것이 왜 필요한지, 어디서, 가장 중요하게는 적용 방법이 완전히 불분명합니다. 그것.

소음의 주파수 응답.

개인적으로 이 기사(예를 들어 이 기사)를 읽은 후에는 그것이 흥미롭고 아름다웠지만 그것이 무엇인지, 왜 실생활에 필요한지 명확하지 않았습니다.
나는 아름다운 사진을 보는 것뿐만 아니라 말하자면 그것이 무엇이며 어떻게 작동하는지 직감으로 느끼고 싶습니다. 그리고 사운드 파일의 생성과 처리에 대한 구체적인 예를 들어보겠습니다. 소리를 듣고 그 스펙트럼을 살펴보고 왜 그런지 이해할 수 있을 것입니다.
이 기사는 복잡한 변수, DSP 및 기타 무서운 주제의 함수 이론을 아는 사람들에게는 관심이 없을 것입니다. 호기심이 많은 학생, 학생 및 공감하는 사람들을위한 것입니다 :).

바로 예약하겠습니다. 저는 수학자도 아니고, 잘못된 말을 많이 할 수도 있습니다(개인 메시지로 정정). 이 글은 제 경험과 현재 프로세스에 대한 이해를 바탕으로 작성되었습니다. 준비됐으면 가자.

재료에 대한 몇 마디

우리 학교 수학 과목을 기억한다면 원을 사용하여 사인 그래프를 그렸습니다. 일반적으로 회전 운동(고조파 진동과 마찬가지로) 사인파로 바뀔 수 있습니다. 이 과정에 대한 가장 좋은 그림은 Wikipedia에 나와 있습니다.


고조파 진동

저것들. 실제로 사인 그래프는 벡터의 회전으로부터 얻어지며 이는 다음 공식으로 설명됩니다.

F(x) = Asin(Ωt + ψ),

여기서 A는 벡터의 길이(진동 진폭)이고, ψ는 제로 시간에서 벡터의 초기 각도(위상)이고, Ω는 회전 각속도이며 이는 다음과 같습니다.

Ω=2 πf, 여기서 f는 주파수(Hz)입니다.

보시다시피 신호 주파수, 진폭 및 각도를 알면 고조파 신호를 구성할 수 있습니다.

마법은 절대적으로 모든 신호의 표현이 다양한 정현파의 합(종종 무한함)으로 표현될 수 있다는 사실이 밝혀지면 시작됩니다. 즉, 푸리에 급수(Fourier series)의 형태이다.
영어 Wikipedia의 예를 들어 보겠습니다. 톱니파 신호를 예로 들어보겠습니다.


램프 신호

그 금액은 다음 공식으로 표시됩니다.

하나씩 더해 보면 먼저 n=1, 다음 n=2 등을 취하여 고조파 정현파 신호가 점차 톱니 모양으로 변하는 모습을 볼 수 있습니다.

이것은 아마도 제가 인터넷에서 찾은 한 프로그램에서 가장 아름답게 설명되었을 것입니다. 위에서 사인 그래프는 회전 벡터의 투영이라고 이미 언급했지만 더 복잡한 신호는 어떻습니까? 이상하게도 이것은 많은 회전 벡터 또는 그 합계의 투영이며 모두 다음과 같습니다.


벡터 드로잉 톱입니다.

일반적으로 링크로 직접 가서 매개변수를 직접 사용해 보고 신호가 어떻게 변하는지 확인하는 것이 좋습니다. IMHO 이해를 돕기 위해 이보다 더 시각적인 장난감을 본 적이 없습니다.

또한 주어진 신호에서 주파수, 진폭 및 초기 위상(각도)을 얻을 수 있는 역절차가 있다는 점에 유의해야 합니다. 이를 푸리에 변환이라고 합니다.


일부 잘 알려진 주기 함수의 푸리에 급수 확장(여기서부터)

자세히 설명하지는 않겠지만 생활에 어떻게 적용할 수 있는지 보여드리겠습니다. 참고문헌에서 재료에 대해 더 자세히 읽을 수 있는 곳을 추천해 드리겠습니다.

실습으로 넘어 갑시다!

모든 학생이 강의에 앉아 예를 들어 수학에 대해 질문하는 것 같습니다. 왜 이 말도 안되는 말이 필요한가요? 그리고 원칙적으로 가까운 미래에 답을 찾지 못한 그는 불행히도 그 주제에 대한 관심을 잃습니다. 그럼 바로 보여드릴게요 실제 사용이 지식을 얻으면 이 지식을 스스로 마스터하게 될 것입니다 :).

나는 모든 것을 스스로 구현할 것입니다. 물론 Linux에서 모든 작업을 수행했지만 구체적인 내용은 사용하지 않았습니다. 이론적으로 프로그램은 다른 플랫폼에서 컴파일되고 실행됩니다.

먼저 오디오 파일을 생성하는 프로그램을 작성해 보겠습니다. wav 파일은 가장 간단한 파일로 사용되었습니다. 구조에 대해 읽을 수 있습니다.
간단히 말해서 wav 파일의 구조는 다음과 같이 설명됩니다. 파일 형식을 설명하는 헤더와 길이가 샘플링_주파수*t 초인 16비트 데이터(포인터) 배열이 있습니다. 또는 44100*t 조각.

사운드 파일을 생성하는 예가 촬영되었습니다. 조금 수정하고 오류를 수정했으며 수정한 최종 버전이 이제 여기 Github에 있습니다.

주파수가 100Hz인 순수 사인파로 2초짜리 사운드 파일을 생성해 보겠습니다. 이를 위해 다음과 같이 프로그램을 수정합니다.

#define S_RATE (44100) //샘플링 주파수 #define BUF_SIZE (S_RATE*10) /* 2초 버퍼 */ …. int main(int argc, char * argv) ( ... float 진폭 = 32000; //가능한 최대 진폭을 취합니다. float freq_Hz = 100; //신호 주파수 /* 사인파로 버퍼 채우기 */ for (i=0 ; 나

순수 사인의 공식은 위에서 논의한 공식과 일치합니다. 32000(32767을 취할 수 있음)의 진폭은 16비트 숫자가 취할 수 있는 값(-32767에서 +32767까지)에 해당합니다.

결과적으로 다음 파일을 얻게 됩니다(모든 사운드 재생 프로그램을 사용하여 들을 수도 있습니다). 이 audacity 파일을 열고 신호 그래프가 실제로 순수한 사인파에 해당하는지 확인해 보겠습니다.


순수관 사인

이 사인의 스펙트럼을 살펴보겠습니다(분석->플롯 스펙트럼).


스펙트럼 그래프

100Hz(로그 스케일)에서 명확한 피크를 볼 수 있습니다. 스펙트럼이란 무엇입니까? 이것이 진폭-주파수 특성이다. 위상-주파수 특성도 있습니다. 기억하신다면 위에서 신호를 생성하려면 신호의 주파수, 진폭 및 위상을 알아야 한다고 말씀드린 적이 있습니까? 따라서 신호에서 이러한 매개변수를 얻을 수 있습니다. 이 경우 진폭에 해당하는 주파수 그래프가 있으며 진폭은 실제 단위가 아니라 데시벨입니다.

프로그램이 어떻게 작동하는지 설명하려면 고속 푸리에 변환이 무엇인지 설명해야 한다는 것을 이해하며, 이것은 적어도 하나의 기사입니다.

먼저 배열을 할당해 보겠습니다.

C = calloc(size_array*2, sizeof(float)); // 회전 인자 배열 in = calloc(size_array*2, sizeof(float)); //입력 배열 out = calloc(size_array*2, sizeof(float)); //배열 출력

프로그램에서 데이터를 길이가 size_array인 배열(wav 파일의 헤더에서 가져옴)로 읽는다고 말씀드리겠습니다.

While(fread(&value,sizeof(value),1,wav)) ( in[j]=(float)value; j+=2; if (j > 2*size_array) break; )

FFT 배열은 시퀀스(re, im, re, im,… re, im)여야 합니다. 여기서 fft_size=1입니다.<< p - число точек БПФ. Объясняю нормальным языком:
복소수 배열입니다. 복소 푸리에 변환이 어디에 사용되는지 상상하기도 두렵지만, 우리의 경우 허수 부분은 0이고 실수 부분은 배열의 각 포인트 값과 같습니다.
고속 푸리에 변환의 또 다른 특징은 2의 거듭제곱의 배수인 배열을 계산한다는 것입니다. 결과적으로 우리는 2의 최소 거듭제곱을 계산해야 합니다:

Int p2=(int)(log2(header.bytes_in_data/header.bytes_by_capture));

데이터의 바이트 수를 한 지점의 바이트 수로 나눈 로그입니다.

그런 다음 회전 계수를 계산합니다.

Fft_make(p2,c); // FFT에 대한 회전 인자를 계산하는 함수(첫 번째 매개변수는 2의 거듭제곱이고 두 번째 매개변수는 할당된 회전 인자 배열입니다).

그리고 우리는 정당한 배열을 푸리에 변환기에 입력합니다.

Fft_calc(p2, c, 입력, 출력, 1); //(1은 정규화된 배열을 얻는다는 의미입니다).

출력에서 우리는 (re, im, re, im,… re, im) 형식의 복소수를 얻습니다. 복소수가 무엇인지 모르시는 분들을 위해 설명하겠습니다. 내가 이 기사를 회전하는 벡터와 GIF로 시작한 것은 아무것도 아닙니다. 따라서 복소평면의 벡터는 실수좌표 a1과 허수좌표 a2에 의해 결정됩니다. 또는 길이(우리의 경우 진폭 Am) 및 각도 Psi(위상).


복소 평면의 벡터

size_array=2^p2에 유의하세요. 배열의 첫 번째 지점은 0Hz(상수)의 주파수에 해당하고, 마지막 지점은 샘플링 주파수, 즉 44100Hz에 해당합니다. 결과적으로 각 지점에 해당하는 주파수를 계산해야 하며 이는 델타 주파수에 따라 다릅니다.

이중 델타=((float)header.주파수)/(float)size_array; //배열 크기당 샘플링 빈도.

진폭 배열 할당:

더블 * 앰프; ampl = calloc(size_array*2, sizeof(double));

그리고 그림을 보세요. 진폭은 벡터의 길이입니다. 그리고 우리는 실제 축과 가상 축에 대한 투영을 가지고 있습니다. 결과적으로 우리는 직각 삼각형을 갖게 될 것이며 여기서 피타고라스 정리를 기억하고 각 벡터의 길이를 세어 즉시 텍스트 파일에 씁니다.

(i=0;i<(size_array);i+=2) { fprintf(logfile,"%.6f %f\n",cur_freq, (sqrt(out[i]*out[i]+out*out))); cur_freq+=delta; }
결과적으로 다음과 같은 파일을 얻게 됩니다.

… 11.439514 10.943008 11.607742 56.649738 11.775970 15.652428 11.944199 21.872342 12.112427 30.635371 12.280655 30.329171 12.448883 11.932371 12.617111 20.777617 ...

해보자!

이제 사인 사운드 파일을 결과 프로그램에 공급합니다.

./fft_an ../generate_wav/sin\ 100\Hz.wav 형식: 16비트, PCM 비압축, 채널 1, 주파수 44100, 초당 88200바이트, 캡처별 2바이트, 샘플당 2비트, 데이터 청크에서 882000바이트= 441000 log2=18 크기 배열=262144 wav 형식 최대 주파수 = 99.928 , amp =7216.136

그리고 우리는 주파수 응답의 텍스트 파일을 얻습니다. gnuplot을 사용하여 그래프를 작성합니다.

구성 스크립트:

#! /usr/bin/gnuplot -persist 터미널 포스트스크립트 설정 EPS 향상된 색상 단색 설정 출력 "result.ps" # 터미널 png 크기 800, 600 설정 # 출력 "result.png" 설정 그리드 xtics ytics 설정 로그 xy 설정 xlabel "Freq, Hz" set ylabel "Amp, dB" set xrange #set yrange 플롯 "test.txt" 1:2 제목 사용 "AFC" with lines linestyle 1 !}

X를 따른 포인트 수에 대한 스크립트의 제한 사항에 유의하십시오. set xrange . 샘플링 주파수는 44100이며 Kotelnikov의 정리를 떠올려 보면 신호 주파수는 샘플링 주파수의 절반보다 높을 수 없으므로 22050Hz 이상의 신호에는 관심이 없습니다. 그 이유는 전문 문헌을 읽어 보는 것이 좋습니다.
따라서 (드럼롤) 스크립트를 실행하고 다음을 확인하세요.


우리 신호의 스펙트럼

100Hz에서 날카로운 피크를 확인하세요. 축이 로그 스케일로 되어 있다는 것을 잊지 마세요! 오른쪽의 양모는 푸리에 변환 오류라고 생각됩니다(여기서는 창이 떠오릅니다).

탐닉하자?

어서 해봐요! 다른 신호의 스펙트럼을 살펴보겠습니다!

주변 소음이 심해요..
먼저 노이즈 스펙트럼을 그려보겠습니다. 주제는 잡음, 무작위 신호 등에 관한 것입니다. 별도의 코스를 수강할 가치가 있습니다. 하지만 가볍게 다루겠습니다. wav 파일 생성 프로그램을 수정하고 프로시저 하나를 추가해 보겠습니다.

Double d_random(double min, double max) ( return min + (max - min) / RAND_MAX * rand(); )

주어진 범위 내에서 난수를 생성합니다. 결과적으로 main은 다음과 같습니다.

Int main(int argc, char * argv) ( int i; float 진폭 = 32000; srand((unsigned int)time(0)); //(i=0; i에 대한 난수 생성기 초기화)

파일을 생성해 봅시다(들어보는 것을 추천합니다). 담대하게 살펴보겠습니다.


대담한 신호

대담 프로그램의 스펙트럼을 살펴보겠습니다.


범위

그리고 우리 프로그램을 사용하여 스펙트럼을 살펴보겠습니다.


우리의 스펙트럼

나는 매우 흥미로운 사실과 소음의 특징에 여러분의 관심을 끌고 싶습니다. 여기에는 모든 고조파의 스펙트럼이 포함되어 있습니다. 그래프에서 볼 수 있듯이 스펙트럼은 매우 균일합니다. 일반적으로 백색잡음은 오디오 장비와 같은 대역폭의 주파수 분석에 사용됩니다. 다른 유형의 소음도 있습니다. 핑크, 블루 등. 숙제는 그들이 어떻게 다른지 알아내는 것입니다.

설탕에 절인 과일은 어떻습니까?

이제 또 다른 흥미로운 신호인 구불구불한 신호를 살펴보겠습니다. 위의 푸리에 급수에서 다양한 신호의 확장 표를 제공했습니다. 구불구불한 곡선이 어떻게 확장되는지 살펴보고 이를 종이에 적고 계속하겠습니다.

25Hz 주파수의 구형파를 생성하기 위해 wav 파일 생성기를 다시 한 번 수정합니다.

Int main(int argc, char * argv) ( int i; short intmeandr_value=32767; /* 사인파로 버퍼 채우기 */ for (i=0; i

결과적으로 우리는 즉시 대담하게 시청해야 하는 오디오 파일을 얻습니다(다시 한번 들어보실 것을 권합니다).


폐하 - 건강한 사람의 사행 또는 사행

괴로워하지 말고 그 스펙트럼을 살펴 보겠습니다.


미앤더 스펙트럼

그것이 무엇인지는 아직 명확하지 않습니다... 처음 몇 가지 고조파를 살펴보겠습니다.


첫 번째 고조파

그것은 완전히 다른 문제입니다! 자, 간판을 살펴보겠습니다. 보세요, 우리는 1, 3, 5 등만 가지고 있습니다. 이상한 고조파. 첫 번째 고조파는 25Hz, 다음(세 번째)은 75Hz, 125Hz 등이며 진폭은 점차 감소합니다. 이론과 실천의 만남!
이제 주목! 실제 생활에서 구형파 신호는 더 높은 주파수와 더 높은 주파수의 무한한 고조파 합을 가지지만, 일반적으로 실제 전기 회로는 트랙의 인덕턴스와 커패시턴스로 인해 특정 주파수 이상의 주파수를 전달할 수 없습니다. 결과적으로 오실로스코프 화면에서 다음 신호를 자주 볼 수 있습니다.


흡연자의 사행

이 사진은 Wikipedia의 사진과 같습니다. 구불구불한 예의 경우 모든 주파수가 촬영되지 않고 처음 몇 개만 촬영됩니다.

첫 번째 고조파의 합과 신호 변경 방식

사행은 무선 공학에도 적극적으로 사용되며(이것이 모든 디지털 기술의 기초라고 말해야 함) 긴 체인을 사용하면 어머니가 인식하지 못하도록 필터링할 수 있다는 점을 이해할 가치가 있습니다. 또한 다양한 장치의 주파수 응답을 확인하는 데에도 사용됩니다. 또 다른 흥미로운 사실은 마이크로 회로 자체가 수십 MHz의 구불구불한 신호를 생성하고 더 높은 고조파가 정확히 TV의 작동 주파수에서 수백 MHz의 주파수를 가질 수 있을 때 TV 방해 전파가 더 높은 고조파의 원리에 따라 정확하게 작동했다는 것입니다. 더 높은 고조파가 성공적으로 TV 방송 신호를 방해했습니다.

일반적으로 이러한 실험의 주제는 끝이 없으며 이제 직접 계속할 수 있습니다.


우리가 하는 일을 잘 이해하지 못하는 분들, 혹은 그 반대의 분들, 이해는 되지만 더 잘 이해하고 싶은 분들, DSP를 공부하는 학생들에게 이 책을 적극 추천합니다. 이 게시물의 작성자는 인형용 DSP입니다. 그곳에서는 복잡한 개념을 어린이도 이해할 수 있는 언어로 설명합니다.

결론

결론적으로 수학은 과학의 여왕이라고 말하고 싶지만 실제 적용하지 않으면 많은 사람들이 수학에 흥미를 잃습니다. 이 게시물이 신호 처리 및 일반적인 아날로그 회로와 같은 훌륭한 주제를 공부하는 데 도움이 되기를 바랍니다(귀를 꽂아 뇌가 새지 않도록 하세요!). :)
행운을 빌어요!