2011-08-01 21 views
1

我必须从写在文本文件中的制表值(两列)中建立一个函数。该进程,使它如下:在MATLAB中列表值的管理

  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); 
    

然而,当我剖析的代码,我发现我的瓶颈是内置的功能fittype.fittypefittype.evaluatecfit.fevalppvalcfit.subsref 这都与曲线拟合。所以我问自己,我应该如何管理列表值来改进我的代码。

+0

嘛,总是会有“瓶颈”,相对来说。 “适合(。)”的真正时机是什么?你认为它们实际上应该有多好?谢谢 – eat

回答

1

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

或许尝试:

ft = fittype('poly1'); 

不知道是这将是你需要,我没有访问数据

0

可能是答案“评估和演示”功能可以在您的工作情况, 一些简单的例子:

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,找到更多的相关功能