Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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:从for循环到no循环的转换_Matlab_Loops - Fatal编程技术网

MATLAB:从for循环到no循环的转换

MATLAB:从for循环到no循环的转换,matlab,loops,Matlab,Loops,我有一个由讲师提供的功能,我们无法查看内部工作 此函数基本上集成了您输入的任何内容 这是我们的循环: for i = 1:length(time)-1 intdefValues(i) = intdef(t, r, time(i), time(i+1)); end 我们正在努力做到这一点: intdefValues = intdef(t, r, time(1:end-1), time(2:end)); 我们错了吗?函数是否不支持向量 函数的语法,以防您好奇 intdef(t, x, a

我有一个由讲师提供的功能,我们无法查看内部工作

此函数基本上集成了您输入的任何内容

这是我们的循环:

for i = 1:length(time)-1
    intdefValues(i) = intdef(t, r, time(i), time(i+1));
end
我们正在努力做到这一点:

intdefValues = intdef(t, r, time(1:end-1), time(2:end));
我们错了吗?函数是否不支持向量

函数的语法,以防您好奇

intdef(t, x, a, b)

其中t=时间向量,x=函数,a,b是开始/结束参数。

当您尝试不使用循环时,函数是否给出错误?我们是否错了?函数是否不支持向量?是的,函数可能只接受标量,而不接受向量作为输入。为了确保这一点,您应该向讲师询问有关函数语法的更多详细信息。或者按照@ParagS.Chandakkar的建议,尝试向其输入向量,看看是否有错误。此外,即使找到某种方式来输入向量,也可能不会使程序运行得更快,因为您正在更改函数
intdef()
的工作方式。所以可能不值得调查。这是如何回答问题的?@Jubobs是的,黑盒测试(正如OP所说的问题所属)不是一个能够直接回答你问题的领域。我们和OP都不知道函数实现的内部细节。尽管如此,即使是黑盒测试也可能间接证明一个通过/失败的困境,不管函数(与许多精心设计/性能优化的lib一样)的内部设计是否支持一种修正的操作方式。
tic();                               % ------------
                                     % TEST ALSO
                                     % PERFORMANCE:

                                     % prepare another "vectorOfTimeENDs",
                                     % aligned with your loop-ing strategy
                                     % for a fully  vectorised call

startsVector = time(1:end-1);        % just a syntax-sugar, may omit for speed == time(1:end-1)
  endsVector = time(2:end);          % this one is important

intdefValues = intdef( tVector, rFunction, startsVector, endsVector );
toc()

% ---------------------------------------------------------------------------
tic();                               % COMPARE WITH THE ORIGINAL FOR/LOOP:
for i = 1:length(time)-1
    intdefValues(i) = intdef( tVector, rFunction, time(i), time(i+1) );
end
toc()