【发布时间】:2014-04-30 03:49:46
【问题描述】:
我有一个程序当前使用 for 循环来遍历一组函数。我试过使用 parfor,但这只适用于大学版本的 Matlab。我想对这个处理进行矢量化处理,这样就不需要 for 循环了。我使用的方程基本上调用了不同类型的贝塞尔函数,并且包含在单独的函数中。
这就是我想要做的事情: 对于 m 的每个值,为每个所需矩阵构建一个矩阵元素向量。然后构建每个完整的矩阵。我认为这工作正常。
在最后的矩阵乘法中出现错误......即使我只是将左边的 2x2 乘以中间的 2x2,我也会得到可怕的错误:
???使用 ==> 时出错 内部矩阵尺寸必须一致。 ==> @(m)CL(m)*CM(m)*CR(m) 中的错误
% Vector for summation. 1 row, 301 columns with data from 0->300
m_max=301;
m=[0:m_max-1];
% Build the 300 elements for the left 2x2 matrix.
CL_11=@(m) H1(m,alpha1);
CL_12=@(m) H2(m,alpha1);
CL_21=@(m) n1*dH1(m,alpha1);
CL_22=@(m) n1*dH2(m,alpha1);
% Build the 300 elements for the middle 2x2 matrix.
CM_11=@(m) n1*dH2(m,alpha2);
CM_12=@(m) -1*H2(m,alpha2);
CM_21=@(m) -1*n1*dH1(m,alpha2);
CM_22=@(m) H1(m,alpha2);
% Build the 300 elements for the right 2x1 matrix.
CR_11=@(m) J(m,alpha3);
CR_21=@(m) n2*dJ(m,alpha3);
% Build the left (CL), middle (CM) and right (CR) matrices.
CL=@(m) [CL_11(m) CL_12(m);CL_21(m) CL_22(m)];
CM=@(m) [CM_11(m) CM_12(m);CM_21(m) CM_22(m)];
CR=@(m) [CR_11(m);CR_21(m)];
% Build the vector containing the products of each triplet of
% matrices.
C=@(m) CL(m)*CM(m)*CR(m);
cl=CL(m)
cm=CM(m)
cr=CR(m)
c=CL(m)*CM(m)*CR(m)
如果您有任何建议或建议,我将不胜感激!我仍然是 Matlab 的新手,并且正在尝试通过使用矩阵和向量来开发更高水平的能力。
谢谢!!
【问题讨论】:
标签: matlab matrix vectorization matrix-multiplication