코드를 묻지는 않지만 통찰력을 얻으 려합니다. 이미 유사한 문제가 발생했기 때문일 수 있습니다.바운드 수치 통합
임베디드 시스템에서 실시간으로 실행되는 코드입니다. 안전상의 이유로 새로운 검사가 실시되어야합니다.
이 확인은 특정 변수의 통합 값을 기반으로합니다. 정수는 마지막 "T_s"초를 확장해야합니다. 즉, 새주기마다 변수가 T_s 초 전에 값을 제거하고 현재 값을 추가해야합니다.
순진한 방법은 마지막 T_s * 주파수 부동 소수점 값을 배열에 저장하는 것입니다.
62.5Hz에서 실행되는이 기능은 많은 소중하고 제한된 메모리를 빠르게 낭비합니다.
명백한 정확도의 비용으로 그러한 수표의 메모리 사용량을 크게 줄이는 알려진 접근법이 있습니까?
이 값은 실제 시스템에서 측정 된 값이며 함수에 의해 생성되지는 않습니다.
N 개의 평균을 저장하고 M 개의 포인트를 각각 저장 한 다음 N 개의 평균을 통합한다고 생각하면 메모리 요구 사항이 N + M 개의 숫자로 줄어들어 T_s * 주파수보다 훨씬 작아 질 수 있지만 궁금합니다.
이 것이 연구되고 "최적"포인트가 발견 된 경우 (예 : M의 함수로). 나는 serached지만, 분명히 "google-fu"는 부러졌다. "수치 적 통합"을 포함한 어떤 것도 내가 찾던 것으로 이끌지 않는다.
더 나은 방법
이 프로젝트의 공식 언어이기 때문에 나는 C와이 게시물 태그가있는 경우는, ANSI-C에서 작동하지 않는 솔루션은 나를 위해 실행 가능한 아니다 운수 나쁘게.
통합 된 값을 겹쳐서 계산하는 간격입니까, 차례로 겹치는 간격입니까? – Evert
@Evert 간격이 하나뿐입니다. 검사는 "t-T_s"에서 "t"까지의 적분에 대해 현재 시간 소인과 같습니다. 마지막 T_s * sampletime 값의 배열과 그 값의 합을 포함하는 별도의 변수로 구현했습니다. 각 단계에서 가장 오래된 것을 빼고, 새로받은 값을 더하고, 배열을 하나씩 이동하여 새로운 값을 맨 위에 추가합니다. – Federico
@ N 평균을 버리고 대신 하나씩 겹치지 않을 것입니다. – Federico