作者ejialan (eji)
看板MATLAB
标题Re: [问题] 如何造出符合所有条件的解的矩阵
时间Mon Nov 18 15:58:34 2013
※ 引述《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
1F:推 DennisTang:非常感谢! 11/18 21:05