왜 내 디지털 필터가 작동하지 않는 날 도와

H

hbaocr

Guest
NUM 개의와 덴 MATLAB (sptool)에 의해 설계된 이곳 낮음 패스 필터 코드는 fsample = 1KHz; Fc = 40Hz; 버터습니다, IIR 필터

파이 acos (-1)을 정의 #
이중 분자 [] = (0.00018321602337,0.000732864093479,0.001099296140218,0.000732864093479,0.00018321602337);

이중 분모 [] = (1, -3.344067837711875,4.238863950884069, -2.409342856586321,0.517478199788041);

코드 :

무효 CVedothiDlg : : Low_pass_filter (더블 * NUM 개, 더블 * 소굴 * 샘플을 두 번, 두 번 data_update, 이중 * 출력, 서명 int length_output_data)

(서명되지 않은 숯불 난;샘플 [4] = 샘플 [3];

샘플 [3] = 샘플 [2];

샘플 [2] = 샘플 [1];

샘플 [1] = 샘플 [0];

샘플 [0] = data_update;

/ / 버퍼 출력

은 (i = length_output_data; 난> 0; 난 -)

(

출력 [내가] = 출력 [난 - 1];

)/ / 출력 데이터를 업데이 트

출력 [0] = NUM 개 [0] * 샘플 [0] NUM 개 [1] * 샘플 [1] NUM 개 [2] * 샘플 [2] NUM 개 [3] * 샘플 [3] NUM 개 [4] * 샘플 [4] - 덴 [1] * 출력 [1] - 덴 [2] * 출력 [2] - 덴 [3] * 출력 [3] - 덴 [4] * 출력 [4];)

 
거기에 사소한 문제가
C 프로그래밍, 나는 생각했다.나는 일반적으로 그럴듯하게 작동 확인을 위해 디버거와 함께 프로그램 실행을 추적하는 것이 좋습니다.
and 500*i/1000
may be executed first.

하나의 포인트는 표현으로 2 * 파이 * 500 * i/1000 컴파일러는 필요에 따라 집행의 순서를 정의하는, 따라서 정수 표현은 무료이며 500
* 500
* i/1000
처음 실행될 수있습니다.하나는 정수 16 일 가능성이있다면, (당신이 enviroement에 대해) 얘기하지 않았다, 어쨌든 다른 잘라내기 오버플로를 발생시키는 것이다.(500.0f * I)
또는 (16) 올바른 실행을 보장할 것이라고 플로트 작문.

이 oher 요점은, 그 함수에서 지역 변수는 일반적으로 C에서, 그래서 필터 스토리지 요소를 포함할 valuesa
T는 초기화되지 않은 임의의 시작입니다.

마지막으로, 잘 모르겠 범위 구성 요소가 작동하는 방법, 만약 그것이 y를 출력 벡터와 올바른 사용.

 
, fvm 감사
내가 사용하고 있는데 VC ver6.0, 및 그 범위, 나는 완전히 TRUE.Because, 내 프로젝트에서 그 범위를 만들
수있는 하나의 Active X 컨트롤을 사용하는
게 확실 해요.

 
버퍼 오버플로가 분명합니다 :
당신 샘플 [4]하지만 배열의 크기는 x 4는 사용하므로 지수
0,1,2,3 아니라 4 허용했다.
또한 Scope.Channels [0 생각]. Data.SetYData는 (y, 1000); / / 신호 출력
무승부이후에 대한 루프를 실행 속도를 좀해야한다.

 
fvm,이 C 표현 2 * 파이 * 500 * i/1000 (((2 * 파이)
* 500) * 1)
/ 1000에 상응하는 비용입니다.
'파이'는 두 번, 그리고 모든 것을 한 번, 이렇게 두 개의 정수 분열의 위험의 승진 것뿐입니다.

 
Kernighan / 리치, 컴파일러 순서를 표현 * 또는 연산자에서 무료이다.또한, * 및 /가 동등한 우선순위.그 첫 번째 i/1000 평가를 금지하는 것이 원칙이 표시되지 않습니다.그건 VC6 프로그래머에게 제공하기 위해 제약을보다 명확하게 정의하고있다
- 추가자가 될 수있습니다.

 
케이 & R2에 섹션 A.7.6, "*, 사업자 Multiplicative 말한다 /, % 그룹의 왼쪽 - - 맞아."

당신
K & R2에 섹션에서이 성명의 생각
12월 2일 수있습니다 :
"C가 대부분의 언어처럼, 어떤에서 연산자의 피연산자가 평가되는 순서를 지정하지 않습니다."
그건 별개의 문제.

 
진심으로 감사합니다
난 진짜로 당신의 모든 종류의 답변에 감사드립니다.

 

Welcome to EDABoard.com

Sponsor

Back
Top