Re: [討論] 多輸入單輸出 曲線擬合

看板MATLAB作者 (Veritas)時間6年前 (2018/10/30 22:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1Rs6dzKE (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Rs6dzKE (MATLAB)