Re: [問題] 如何造出符合所有條件的解的矩陣

看板MATLAB作者 (eji)時間12年前 (2013/11/18 15:58), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《DennisTang (笑得很勉強)》之銘言: : 大家好, : 假設我現在有個方程式x1 + x2 + x3 = 1 : x1 >= x2 >= x3 >=0, 而有個參數叫scale = 0.1 : 我想造出符合這個限制的所有解, : 例如[ x1, x2, x3] = [ 1, 0, 0; ... : 0.9, 0.1, 0; ... : 0.8, 0.2, 0; ... : 0.8, 0.1, 0.1; ... : 0.7, 0.3, 0; ... : 0.7, 0.2, 0.1; ... : 0.6, 0.4, 0; ... : 0.6, 0.3, 0.1; ... : 0.6, 0.2, 0.2; ... : . : . : . : scale=0.1是指我原來用for loop造的話, : for x1 = 1 : 0.1 : 0 : for x2 = 0: 0.1: 1-x1 : x3 = 1- x1 -x2 : end : end : 我本來是用for loop硬算,但是現在要解的維度很大, : 所以想請問有沒有內建的函數或是任何有幫助的函數? 用ndgrid硬爆 scale=0.1; temp=0:scale:1; [x1,x2,x3]=ndgrid(temp,temp,temp); x=x1+x2+x3; i1=x1>=x2; i2=x2>=x3; i3=x==1; i=i1&i2&i3; x1=x1(i); x2=x2(i); x3=x3(i); 三維的話用meshgrid也可以 不過維度更高的話就要用ndgrid 不過不確定你真的要解的問題記憶體夠不夠 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.146.175

11/18 21:05, , 1F
非常感謝!
11/18 21:05, 1F
文章代碼(AID): #1IYSYiJN (MATLAB)
文章代碼(AID): #1IYSYiJN (MATLAB)