일부 벡터화 된 코드를 iOS 어플리케이션에 구현한다는 목표로 Accelerate 프레임 워크를 처음으로 사용하고 있습니다. Objective C 또는 C에서 벡터 작업에 관해서 한 일은 절대로 시도한 적이 없습니다. MATLAB에 대한 경험이 있다면, Accelerate를 사용하는 것이 고통보다 훨씬 더 많은 것인지 궁금합니다. 다음을 계산하려고한다고 가정합니다.Accelerate 프레임 워크를 사용하여 벡터로 코딩하기
여기서 a와 b는 벡터입니다.
MATLAB 코드 : 나는이 문서를 통해 일부 침 후를 참조로
a = 1:4;
b = 4*(sin(a/2)).^2;
그러나, 상황이 가속화 사용하여 매우 다르다.
내 C 구현 : 솔직히float a[4] = {1,2,3,4}; //define a
int len = 4;
float div = 2; //define 2
float a2[len]; //define intermediate result 1
vDSP_vsdiv(a, 1, &div, a2, 1, len); //divide
float sinResult[len]; //define intermediate result 2
vvsinf(sinResult, a2, &len); //take sine
float sqResult[len]; //square the result
vDSP_vsq(sinResult, 1, sqResult, 1, len); //take square
float factor = 4; //multiply all this by four
float b[len]; //define answer vector
vDSP_vsmul(sqResult, 1, &factor, b, 1, len); //multiply
//unset all variables I didn't actually need
, 내가 여기에 최악의 모르는 : 모든 중간 단계를 추적, 인수가 상당히 다른 VecLib에 대해 (과 VDSP 전달하는 방법을 기억하려고), 또는 뭔가 사소한 일을하는 데 너무 많은 시간이 걸린다는 사실을 기억하십시오.
저는 여기에 뭔가 빠져 있고 대부분의 단계가 병합되거나 단축 될 수 있기를 바랍니다. 코딩 리소스, 좋은 코딩 습관 (어려운 방법이나 책에서 배운) 등에 대한 모든 권장 사항은 매우 환영 할 것입니다! 어떻게 여러 줄의 벡터 계산을 처리합니까?
간단한 나누기를 수행하기 위해이 라이브러리가 포인터에 의해 전달 된 변수에 2를 필요로하면 라이브러리가 좋다고 말하고 싶습니다.또는 사용하지 않는 벡터가 아닌 부분이있을 수 있습니다. – Shahbaz