24小时热门版块排行榜    

查看: 647  |  回复: 3

littleval

银虫 (正式写手)

[求助] 请教一个matlab编程问题,所有元素相加为定值,但每个元素又有各自的最大最小值约束。 已有1人参与

请教大家matlab编程的问题,我想生成一个矩阵,每一行的每个元素都有各自不同的最大最小值,但每行行所有元素求和都等于一个相同的定值,请问该怎么设计程序呢? 最好有程序附上,万分感谢!
回复此楼
和你一起踏上漫漫科研路
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

littleval

银虫 (正式写手)

补充一下,每行一共11个元素,均为实数(不一定为整数),第1到3个范围是[0,7],第4到6个是[0,40],第7到9个范围是[0,65],第10个是[0,50],第11个是[-50,0]。定值(即求和)为100. 拜托各位!
和你一起踏上漫漫科研路
2楼2014-12-24 12:09:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Woodyyy

新虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
这个不难,看起来是无穷解的,你是要生成这种随机数组么?


说个比较简单的办法,就只控制最后第11个数字,前十个按照随机数产生。生成区间在[a,b]的n行m列随机数的代码为   r = a + (b-a).*rand(n,m)
3楼2014-12-24 13:03:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Woodyyy

新虫 (小有名气)

【答案】应助回帖

引用回帖:
3楼: Originally posted by Woodyyy at 2014-12-24 13:03:40
这个不难,看起来是无穷解的,你是要生成这种随机数组么?


说个比较简单的办法,就只控制最后第11个数字,前十个按照随机数产生。生成区间在的n行m列随机数的代码为   r = a + (b-a).*rand(n,m)

前十个数字按各自区间生成后


用100减去它们的和,然后得到第十一列数字.
筛出第十一列数字在[-50,0]的数据作为你的sample

用matlab生成随机数很快的,你搞上千万组都没问题
4楼2014-12-24 13:07:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 littleval 的主题更新
信息提示
请填处理意见