Matlab 排列组合

2024-05-17 23:17

1. Matlab 排列组合

楼上的答案是正确的,但存在一些小问题:
1、循环到55555是没道理的,应该到33333,因为最大值只可能是33333。
2、程序效率太低,在我的电脑上运行需要几十秒。可以进一步优化,把效率提高几倍是可能的。
 
========
我的做法: 
========
我这里提供一种更简单的方法,一共只需要3行代码,而且效率极高,只需要大约0.02秒:
[a,b,c,d,e]=ndgrid(0:3);x=a(:)+b(:)*10+c(:)*10^2+d(:)*10^3+e(:)*10^4;x(any(int2str(x)=='0',2))=[];
 
==============
程序的基本思想:
==============
考虑5位数,各位数字只可能是0~3,而且0只能出现在前面(把不足五位的看作前面的数字是0)。所以,用ndgrid生成五位数的各位,并加到一起得到五位数,然后考虑到数字中不能出现0,将其转换为字符串之后再删掉含有0的数字即可(用到any和int2str函数)。
 
==========
得到的结果: 
==========
>> x
x =
           1           2           3          11          12          13          21          22          23          31          32          33         111         112         113
(限于篇幅,中间删除部分行)       33311       33312       33313       33321       33322       33323       33331       33332       33333
>> whos x  Name      Size                   Bytes  Class
  x       363x1                     2904  double array

Matlab 排列组合

2. matlab已知一组数据是按从小到大的排列,输入一个数据插入到这组数据中,要求还是按从小到大排列

已知一组数据是按从小到大的排列,输入一个数据插入到这组数据中,其排列仍要求按从小到大排列。题主这个问题,使用到的函数是sort()函数,其使用格式:
B = sort(A,direction) 
这里的 A,是指定的顺序显示的 A 的有序元素。
而direction,可以用 'ascend' 表示升序(默认值),'descend' 表示降序。
所以,题主的问题可以这样实现:
A=[。。。] %已知一组数据
B=[。。。] %需要插入的数据
C=[A B] %将A、B数据赋值给C
C=sort(C, 'ascend') %对C按升序的方式进行排序(从小到大),然后再赋值给新的C

3. MATLAB中,怎样把一组给定的数据随机排列?

 使用函数randperm()即可实现。
例:
A = [7,6,3,9,10];        % 试验矩阵【用于试验,矩阵元素为待随机排列的数据】
randIndex_A = randperm(5);  % 生成1到5这几个数的随机排列
B = A(randIndex_A);       % 随机排列后的矩阵
每一行代码运行结果:
>>A = [7,6,3,9,10] 
A = 7 6 3 9 10
>>randIndex_A = randperm(5)
randIndex_A =1 4 5 3 2
>> B = A(randIndex_A)
B =7 9 10 3 6

扩展资料
函数randperm()
1、语法格式:R = randperm(n)
2、函数功能:将数字1:n进行随机排列,排列结果存储在行向量内
3、例:输入 randperm(3)
      输出 3 1 2
4、使用的方法:
利用索引值的随机排列,生成所有元素的随机排列

MATLAB中,怎样把一组给定的数据随机排列?

4. MATLAB中,怎样把一组给定的数据随机排列?

 使用函数randperm()即可实现。
例:
A = [7,6,3,9,10];        % 试验矩阵【用于试验,矩阵元素为待随机排列的数据】
randIndex_A = randperm(5);  % 生成1到5这几个数的随机排列
B = A(randIndex_A);       % 随机排列后的矩阵
每一行代码运行结果:
>>A = [7,6,3,9,10] 
A = 7 6 3 9 10
>>randIndex_A = randperm(5)
randIndex_A =1 4 5 3 2
>> B = A(randIndex_A)
B =7 9 10 3 6

扩展资料
函数randperm()
1、语法格式:R = randperm(n)
2、函数功能:将数字1:n进行随机排列,排列结果存储在行向量内
3、例:输入 randperm(3)
      输出 3 1 2
4、使用的方法:
利用索引值的随机排列,生成所有元素的随机排列