Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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循环中的函数_Matlab_Loops_For Loop - Fatal编程技术网

如何在MATLAB中第一次迭代后忽略for循环中的函数

如何在MATLAB中第一次迭代后忽略for循环中的函数,matlab,loops,for-loop,Matlab,Loops,For Loop,我在for循环中有一个函数。在这个函数中,我加载一个文件,对数据点进行插值,如下所示。这个过程非常昂贵。我可以在第一次迭代后跳过这个过程,只使用(p1,p2)的“F”函数(CAR=F(p1,p2))作为输入值吗 function CAR = AcAd (p1, p2) num = xlsread('Book.xlsx'); x = num(:, 1); y = num(:, 2); z = num(:, 3); t1 = 0.05:0.02:2; t2 = 0.05:0.02:0.5; F =

我在for循环中有一个函数。在这个函数中,我加载一个文件,对数据点进行插值,如下所示。这个过程非常昂贵。我可以在第一次迭代后跳过这个过程,只使用(p1,p2)的“F”函数(CAR=F(p1,p2))作为输入值吗

function CAR = AcAd (p1, p2)
num = xlsread('Book.xlsx');
x = num(:, 1); y = num(:, 2); z = num(:, 3);
t1 = 0.05:0.02:2; t2 = 0.05:0.02:0.5;
F = scatteredInterpolant(x, y, z);
[qx, qy] = meshgrid(t1, t2); 
qz = F(qx, qy);

CAR = F(p1, p2);

有几种方法可以解决此问题:

  • 要求用户传入数据:
    function CAR=AcAd(p1,p2,num)
    并仅在函数外部加载一次
  • 具有存储数据的方法:

  • 这显然只适用于
    num
    ,但可以通过同样的方式轻松扩展以获得
    F

    function CAR = AcAd (p1, p2)
    if (~exist('num'))
        num = xlsread('Book.xlsx');
    end