MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   用matlab代替函数输入参数的循环 (https://www.labfans.com/bbs/showthread.php?t=23658)

poster 2019-12-10 20:41

用matlab代替函数输入参数的循环
 
这是我的问题:

我有一个A = 1xN矩阵和B = 6xN矩阵我也有一个函数F = @(x,y)...

我想做的就是以每次F的输入参数为A(1,i)和B(:,i)的方式循环A和B的值

有没有一种方法可以针对所有值而不使用for循环来获取时间?

干杯



[B]回答:[/B]

使用较新版本的MATLAB循环并没有您想象的那么昂贵。如果函数F是相对简单的东西,可以很容易地向量化,那么通常可以比使用for循环获得更快的性能,但是如果F表示一个相当复杂的操作,则实际上可能需要做更多的工作才能尝试解决问题。 。

不知道F实际作用,很难给您一个[I]具体的[/I]答案。但是,除了对[URL="https://stackoverflow.com/questions/2867901/introduction-to-vectorizing-in-matlab-any-good-tutorials/2867951#2867951"]您的操作[/URL]进行[URL="https://stackoverflow.com/questions/2867901/introduction-to-vectorizing-in-matlab-any-good-tutorials/2867951#2867951"]矢量化处理[/URL]外,在某些情况下,还可以使用一些函数代替for循环。这些示例包括[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/arrayfun.html"]ARRAYFUN[/URL] , [URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]CELLFUN[/URL] , [URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/structfun.html"]STRUCTFUN[/URL]和[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/bsxfun.html"]BSXFUN[/URL] 。

作为如何使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/bsxfun.html"]BSXFUN的示例[/URL] ,假设您正在执行的操作F涉及将B的每一列乘以A的相应列中的值。换句话说, C(:,i) = A(1,i).*B(:,i); i所有的。您可以使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/bsxfun.html"]BSXFUN[/URL]进行以下操作:

C = bsxfun(@times,B,A);

[url=https://stackoverflow.com/questions/3194648]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:09

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.