多次元配列に対するPolyfitの高速化

조회 수: 5 (최근 30일)
Kouta Amano
Kouta Amano 2019년 9월 3일
댓글: Kouta Amano 2019년 9월 4일
私は測定水準x, 測定値yに対し y=a0 + a1*x + a2*x^2 の形でカーブフィッティングを行いたいと考えています。
例えばxの次元は100万×3, yの次元は100万×3であり、1行1行について上記カーブフィッティングを行いたいです。
arrayfunを用いて下記のような関数を作成すると計算は可能でしたが実行速度が大変遅いです。
実行速度を改善するために、よりよい実装方法はないでしょうか。
function coefs = multiPolyfit(x,y,dim)
%%%%%%%%%%%%%%%%%%%%%%%
% x: array型。サンプルを行方向、列方向は水準。
% y: array型。サンプルを行方向、列方向は水準。
% dim: int型
%%%%%%%%%%%%%%%%%%%%%%%
s = table2struct(table(x,y,'VariableNames',{'x','y'}));
coefs = arrayfun(@(z) polyfit(z.x,z.y,dim),s,'UniformOutput',false);
end

채택된 답변

Kazuya
Kazuya 2019년 9월 4일
こちらに同じ質問が見つかりました。Matt Tearle さんの回答で10倍くらいは速くなりそうです。
  댓글 수: 1
Kouta Amano
Kouta Amano 2019년 9월 4일
ありがとうございます。
自分のもとの実装に比べて50倍速くなりました・・・。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!