방금 vecLib 프레임 워크를 사용하여 Mac OS X 10.7에서 집중적 인 행렬 벡터 곱셈을 수행하는 프로그램을 시작했습니다. 이런 간단한 프로그램을 만들었습니다. 행렬 a에 벡터 x를 곱하고 결과를 벡터 y에 더합니다.Mac OS X 10.7의 vecLib 프레임 워크에 행렬과 벡터 곱하기 문제
#include <vecLib/vectorOps.h>
#include <stdio.h>
float a[8][4] = // the matrix to be multiplied
{
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{1.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 1.0f},
{1.0f, 0.0f, 1.0f, 0.0f},
{1.0f, 0.0f, 1.0f, 0.0f},
{1.0f, 1.0f, 1.0f, 0.0f},
{0.0f, 0.0f, 0.0f, 1.0f},
};
float x[4] = {1.0f, 2.0f, 4.0f, 8.0f}; // the vector to be multiplied
float y[8] = {0.f, 0.f, 0.f, 0.f, // the result vector
0.f, 0.f, 0.f, 0.f};
int main() {
int i;
vSgemv('n', 8, 4, 1.0f, (const vFloat *)a, (const vFloat *)x, 1.0f, (vFloat *)y);
for (i = 0; i < 8; i++) {
printf("%.4f\n", y[i]);
}
return 0;
}
나는 컴파일 및 콘솔
gcc -framework vecLib -o test test.c && ./test
에서 프로그램을 실행하지만 결과는 다음과 같았다; 작업이 수행되지 않고 결과 벡터가 여전히 비어 있습니다.
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
오전 나는 vecLib 프레임 워크 행렬 및 벡터 함수를 실행하는 일부 초기화 누락?
우트을 내 0x200th 대답! –
감사합니다. 정말 도움이되었습니다. 그러나 Accelerate framework [여기] (http://developer.apple.com/library/mac/#documentation/Accelerate/Reference/AccelerateFWRef/_index.html)의 참조 페이지에 잘못된 내용이 들어있는 이유를 알 수 없습니다. 정보가 잘못된 코드를 작성하게 만들었습니다. – araste
+1 - 훌륭한 반응. – duffymo