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

时间:2015-09-08 20:57:28

标签: matlab loops for-loop

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

1 个答案:

答案 0 :(得分:2)

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

  1. 要求用户传入数据:function CAR = AcAd (p1, p2, num)并仅在功能外加载一次。
  2. 有一个global来存储数据:
  3. function CAR = AcAd (p1, p2)
    if (~exist('num'))
        num = xlsread('Book.xlsx');
    end
    

    这显然仅适用于num,但可以轻松扩展为F以同样的方式。