Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 是否可以评估'*B*a使用bsxfun?_Matlab - Fatal编程技术网

Matlab 是否可以评估'*B*a使用bsxfun?

Matlab 是否可以评估'*B*a使用bsxfun?,matlab,Matlab,我试图计算公式a'*B*a。我的“a”矩阵大小为n*4;B是4*4*n。结果应该是n*1。如果我在for循环中对这个过程进行编码,它应该是: num = size(a,1); result=zeros(num,1); for i=1:num result(i)=a(i,:)*B(:,:,i)*a(i,:)'; end 根据经验,我发现使用bsxfun应该更快。但我尝试了几次,却未能创建“单例维度”。在这个过程中可以使用它吗?我不熟悉这个用法。我非常感谢任何建议和提示。“根据经验,我发现

我试图计算公式a'*B*a。我的“a”矩阵大小为n*4;B是4*4*n。结果应该是n*1。如果我在for循环中对这个过程进行编码,它应该是:

num = size(a,1);
result=zeros(num,1);
for i=1:num
    result(i)=a(i,:)*B(:,:,i)*a(i,:)';
end

根据经验,我发现使用
bsxfun
应该更快。但我尝试了几次,却未能创建“单例维度”。在这个过程中可以使用它吗?我不熟悉这个用法。我非常感谢任何建议和提示。

“根据经验,我发现使用“bsxfun”应该更快。”你为什么这么说?你能详细说明一下吗?@CrisLuengo我测试了一些代码。它们中的很多都表明“bsxfun”比for循环快。请看我前面的问题。我从Luis Mendo的答案中找到了一个使用“bsxfun”的解决方案。它是最快的。你可以做这样的事情:但是由于额外的内存,它可能不会节省很多时间,而且事实上Matlab的JIT编译比以前好多了。MTIMESX函数可能会有所帮助,但我还没有尝试过:。@ZhangWei在你的第二个链接中注意到for循环的速度在bsxfun速度的10%以内。在过去的几天里,你问了3个类似的(不断发展的)问题——这是你问的几个部分的更广泛任务的一部分吗?这些问题没有错,只是突出了一个趋势。。。