Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: how to get multiprod working
Date: Sat, 22 Jan 2011 15:19:03 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 44
Message-ID: <ihesh7$l8f$1@fred.mathworks.com>
References: <ihal0c$l8n$1@fred.mathworks.com> <iham08$pjm$1@fred.mathworks.com> <ihbppt$nl1$1@fred.mathworks.com> <ihc5pk$o8u$1@fred.mathworks.com> <ihddhg$hhd$1@fred.mathworks.com> <ihdng9$jbp$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: www-00-blr.mathworks.com
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1295709543 21775 172.30.248.45 (22 Jan 2011 15:19:03 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Sat, 22 Jan 2011 15:19:03 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1037739
Xref: news.mathworks.com comp.soft-sys.matlab:705383

"James Tursa" wrote in message <ihdng9$jbp$1@fred.mathworks.com>...
> "Jonathan W Smith" wrote in message <ihddhg$hhd$1@fred.mathworks.com>...
> > 
> > I have 2 matrices A(6,6,4,24,28) and B(6,6,28)  I want to do the following A(6,6,1,1,1) x B(6,6,1) ... A(6,6,4,24,28) x B(6,6,28) but only when the 5th dimension of A and 3rd dimension of B match.
> 
> C = mtimesx(A,reshape(B,6,6,1,1,28));
> 
> > I was getting erroneous values for the elements in the 6x6 matrices when using multiprod.
> 
> I am not familiar enough with multiprod to know the proper input dimensions needed to do the calculation you want in multiprod. Maybe the following will work:
> 
> C = multiprod(A,reshape(B,6,6,1,1,28));
> 
> > I do not have visual basic that allows me to use mtimesx.
> 
> MTIMESX does not need Visual Basic, or anything from Visual Studio. It can be used by anyone with any C compiler that compiles mex routines, and that includes the lcc compiler that comes shipped with MATLAB. You can build MTIMESX on a Windows system as follows:
> 
> - Download from the FEX (I assume you have already done this)
> - Copy the files to one of your directories that is on the MATLAB path (see Steve Lord's post).
> - Issue the following commands:
> 
> mex -setup
> (Wait for the prompt, then press Enter)
> (Select a C/C++ compiler, such as lcc)
> mtimesx % This will cause mtimesx to self-build
> 
> If you have a Mac or other Unix/Linux type system, the build routine is not automated. If that is the case let me know and I can try to help with this.
> 
> James Tursa



James and all,

I got MEX to compile and mtimesx to work.   I tried the mtimesx suggestion above but it the elements of the 6x6 matrices continued to have the erroneous values.  Elements of the 6 x 6 matrices where the values should have been 0 were not.

Matrix B is a column with 28 levels of 6 x 6 matrices. I each level in B contains fractions.  I want to multiply these columns in B by A which for every hour (24) of everyday (4 days) has columns of 28 6 x 6 matrices.  

The elements of 6 x 6 matrices in A have unique values for every hour of everyday, however the 28 levels are the same.  When I multiply each of level in A by their corresponding level in B each hour and level in A, the values in A are adjusted based on the based on the fraction.

Thanks
Jonathan

Jonathan