How to multiply 3 matrices?
17 ビュー (過去 30 日間)
古いコメントを表示
I want to multiply 3 matrix. each has dimension sigmas=1*784, poshidstates=100*500, vishid=784*500. Then i want to add this with matrix of dimension visbiases=1*784. numdims=784,numcases=100.
i have done this as,
negdatapart=repmat(sigmas,numdims,1)' *(poshidstates*vishid')' ;
negdata= negdatapart'+repmat(visbiases,numcases,1)
something goes wrong here i guess. Can someone give me an idea
9 件のコメント
dpb
2014 年 8 月 20 日
As others have suggested, you need to back off to a small-enough problem that you can compute the correct answer and then use debug to work thru the logic error in where it goes wrong. That it's "after a few iterations" probably means a logic error elsewhere as if it were a dimensions problem as has been pointed out, it wouldn't work at all.
IOW, as another has also suggested, what you apparently have is a logic error, not Matlab-specific error and you need to see why the result begins to deviate to follow where it goes wrong. That again is probably practical only w/ a very small problem sample size instead of order of 100's.
採用された回答
Matt J
2014 年 8 月 19 日
編集済み: Matt J
2014 年 8 月 19 日
negdata=bsxfun(@plus, sigmas+visbiases, poshidstates*vishid')
3 件のコメント
Matt J
2014 年 8 月 20 日
編集済み: Matt J
2014 年 8 月 20 日
mult_result=bsxfun(@times, sigmas, poshidstates*vishid');
add_result=bsxfun(@plus, visbiases, mult_result);
If this istill sn't precisely what you want, you should still be able to figure it out from the documentation from bsxfun. It's generally what you would use for any kind of element-wise operation between a matrix and a vector.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!