Управление табличными значениями в MATLAB - PullRequest
1 голос
/ 01 августа 2011

Я должен построить функцию из табличных значений (два столбца), которые записаны в текстовом файле.Чтобы сделать это, выполните следующие действия:

  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.fittype, fittype.evaluate, cfit.feval, ppval и cfit.subsref, которые связаны с подгонкой кривой.Поэтому я спрашиваю себя, как мне следует управлять табличными значениями для улучшения моего кода.

Ответы [ 2 ]

1 голос
/ 01 августа 2011

вы пытаетесь подогнать 18304 точек данных к кривой.Кроме того, вы используете linearinterp ... что означает, что подпрограмма выполняется кусочно.если вы хотите сделать код быстрее, используйте меньше точек данных.

Или, возможно, попробуйте:

ft = fittype('poly1');

Не уверен, что это будет ответ, который вам нужен, так как у меня нет доступа к данным

0 голосов
/ 01 августа 2011

Может быть, функция "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

Также у нее есть родственное имя"февал" угадай, что это делает![V, D] = feval ('eig', A) [V, D] = eig (A)

и здесь

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

Вы правы!все эквивалентны,

проверьте здесь и найдите более подходящую функцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...