http://blog.csdn.net/chenlanjie842179335/article/details/8043925
矩阵与矩阵的乘法,分为双精度的cblas_dgemm和单精度的cblas_sgemm,两个函数的参数意义一样,只是类型不一样
运算式:C=alpha*A*B+beta*C
一般取alpha=1.0,beta=0.0 即计算式:C=A*B
cblas_sgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,A的列数,B,B的列数,beta,C,C的列数)
CblasRowMajor表示数组时行为主,相应矩阵大小为(M*K)乘以(K*N),可以得到M,K,N的值
前面的CblasNoTrans表示A是否转置,后面表示B是否转置,即可以表示A(T)*B=C或者A*B(T)=C或者A(T)*B(T)=C,如果是A的转置乘以B,M,N是A的转置的行数和列数
cblas_dgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,A的列数,B,B的列数,beta,C,C的列数)
矩阵与向量的乘法,同样有两个cblas_sgemv和cblas_dgemv
运算式:C=alpha*A*b+beta*C
一般取alpha=1.0,beta=0.0 即计算式:C=A*b
cblas_sgemv(CblasRowMajor, CblasNoTrans,A的行数,A的列数,alpha,A,A的列数,b,1,beta,C,1)
如果是A的转置*b,用
cblas_sgemv(CblasRowMajor, CblasTrans,A的行数,A的列数,alpha,A,A的列数,b,1,beta,C,1) =====> 为什么转置后,其他参数不变?————个人认为ablas_sgemv()中参数MN表示的在op()操作之前的时候矩阵的行数和列数,即不管是Y←αAX + βY还是Y←αA'X + βY,都是矩阵A本身的行数和列数,而非其转置。