Re: [討論] 多輸入單輸出 曲線擬合
※ 引述《jimmyjean (色仙)》之銘言:
: 標題: [討論] 多輸入單輸出 曲線擬合
: 時間: Thu Oct 25 22:46:47 2018
: 大家好
: 小弟的問題如下
: 假設我有3個獨立的輸入 想擬合一條2次的曲線 以W=A\y計算 其中A矩陣每一橫列都是
: [1 x1 x2 x3 x1*x2 x2*x3 x1*x3 x1^2 x2^2 x3^2]
: 請問有沒有函式是可以建立A矩陣的
: 目前的解法是手動更改 但希望可以做到動態追蹤輸入數及階數後建立A矩陣
: 請各位大神幫忙了
: 感恩
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.48.187
: ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1540478809.A.128.html
: 推 rockman037: 做一個ones矩陣 10/29 11:46
: → rockman037: 然後矩陣相乘 10/29 11:48
: 推 sunev: 要一般n次擬合的矩陣比較麻煩,但還是可以用eval加ndgrid 10/30 13:26
: → sunev: 實務上可能針對3次,2次分別處理即可 10/30 13:27
: 推 profyang: http://bit.ly/matlab_file_exchange_polyfitn 這個? 10/30 17:57
: → profyang: 嘛...不過他應該也是用for loop一項項去.*之類的吧 10/30 17:58
: 推 profyang: 看有沒有人能想出不用for loop的方法 暫時是想不出來 10/30 18:04
n=3; % number of indepdent variables
m=2; % degree of the fitting polynomial
N=15; % number of data
X=rand(N,n); % testing data
% construct the power of independent variable
x=cell(1,n);
[x{:}]=ndgrid(0:m); % 這一行本來以為要用eval作,後來發現可以用cell
x=cell2mat(cellfun(@(b)b(:),x,'UniformOutput',false));
x(sum(x,2)>m,:)=[];
% some sorting
x=sortrows([x max(x,[],2) sum(x,2)],n+2:-1:1);
x=x(:,1:n);
A=squeeze(prod(X.^reshape(x',[1 n size(x,1)]),2));
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.54.158
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1540909565.A.50E.html
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章