MATLAB中的列表值管理

时间:2011-08-01 13:57:39

标签: matlab performance

我必须从表格值(两列)构建一个函数,这些函数写在文本文件中。制作它的过程如下:

  1. 使用命令importdata读取数据文件

    Xp = importdata('Xp.dat','\t',1);
    
  2. 将每列存储在变量

    x = Xp(1:18304,1);
    y = Xp(1:18304,2);
    
  3. 使曲线拟合两个变量

    ft = fittype('linearinterp');
    datos.f_Xp = fit(x,y,ft);
    
  4. 但是,当我分析代码时,我发现我的瓶颈是内置函数fittype.fittypefittype.evaluatecfit.fevalppval和{{ 1}} 这与曲线拟合有关。所以我问自己应该如何管理用于改进代码的列表值。

2 个答案:

答案 0 :(得分:1)

您正试图将18304个数据点拟合到曲线中。此外,您正在使用linearinterp ...这意味着例程正在以分段方式运行。如果你想让代码更快,请使用更少的数据点。

或者尝试:

ft = fittype('poly1');

由于我无法访问数据

,因此不确定是否是您需要的答案

答案 1 :(得分:0)

可能是“Eval”功能可以适用于您的情况, 一些简单的例子:

A = '1+4'; eval(A)
ans =
     5
P = 'pwd'; eval(P)
ans =
/home/myname

更高级!

for n = 1:12
        eval(['M',int2str(n),' = magic(n)'])
end

此外,它有一个姐妹名字“feval” 猜,它做了什么!     [V,D] = feval('eig',A)     [V,D] = eig(A)

在这里

function plotf(fun,x)
y = feval(fun,x);
plot(x,y)

你是对的!一切都是等价的,

查看here并找到更多相关功能