在matlab中实现向量中元素的排列组合

2020-11-17 21:36:42 字数 3642 阅读 2344

1楼:匿名用户

其实挺简单。首先,忽略固定为0的几项,直接排列不固定的几项,比如如你所说的1、2、3、4、5、0、0:

x=[1,2,3,4,5,0,0];

y=perms(x);

y就是x的所有排列,perms是系统函数,你可以help一下。

但关键是有两个零,有些排列是重复的,此时使用化简函数unique即可:

y=unique(y,'rows');

y变成了一个排列的矩阵,每一行是一种排列,而且不重复。

最后在需要的位置插入一些0的列向量即可。

如何利用matlab把多组向量排列组合。 25

2楼:匿名用户

生成全排列可以用perms函数,把各向量放在元胞数组中,然后按照全排列来组合即可:

m = ;

i=perms(1:3);

c=mat2cell(i,ones(6,1),3);

r=cellfun(@(ii)[m],c,'uniformoutput',false)

这样得到的结果r是一个元胞数组,其每个元素分别是一个组合出来的向量。

>> cellfun(@(c)fprintf('%s\n',mat2str(c)),r)

[7 8 9 4 5 6 1 2 3]

[7 8 9 1 2 3 4 5 6]

[4 5 6 7 8 9 1 2 3]

[4 5 6 1 2 3 7 8 9]

[1 2 3 4 5 6 7 8 9]

[1 2 3 7 8 9 4 5 6]

用matlab怎样写出一维数组(或向量)的全排列组合?

3楼:匿名用户

我只说方法。

(1)用perms

(2)先用nchoosek写出组合,再对其每种组合用perms进行全排列即可。

在matlab中怎么输入排列组合 5

4楼:疾风动竹

1、***bntns(x,m)

列举出从n个元素中取出m个元素的组合。其中,x是含有n个元素的向量。

2、perms(x)

给出向量x的所有排列。

matlab中排列组合问题,新手救急!!!谢谢!!!

5楼:匿名用户

双击matlab软件的快捷键,进入matlab的工作界面

matlab:排列组合问题

2将命令行窗口取消停靠(这样便于输入),按ctrl+shift+u取消停靠:

matlab:排列组合问题

end2.排列组合的函数

perms(x):在程序命令框中输入一个向量x,perms(x) 给出向量x的所有排列。

matlab:排列组合问题

***bntns(x,m):在程序中输入一个向量x与需要的元素个数m,***bntns(x,m)给出了从包含n个元素的向量x中选取m个元素的组合。

matlab:排列组合问题

matlab:排列组合问题

3nchoosek(x,m):在程序中输入一个向量x与需要的元素个数m,nchoosek(x,m)给出了从包含n个元素的向量x中选取m个元素的组合。

怎么在matlab中对排列组合中的某个元素进行赋值

6楼:匿名用户

只要在对应的位置直接赋值便可!

比如a(3,4)=5,表示对a矩阵中第三行,第四列的元素赋值为5!

matlab对于一组已有数据的多种排列组合

7楼:匿名用户

a=1:10;%十个数,可以是其他不同的十个r=zeros(size(a));%每个位置出现的次数,初始化全部为零

fori=1:100

b=a(randperm(length(a)));%b就是a中10个数的随机顺序排列

ind=find(b==1);%找到1的位置,也可以是其他a中的数字r(ind)=r(ind)+1;%对应位置记录加1个end

8楼:匿名用户

x=x(randperm(numel(x)))numel(x)获得变量长度

randperm(n)产生长度为n的随机数列 如:

randperm(4)

ans=

3 2 1 4

x(...) 取得x中相应元素产生新数列

9楼:匿名用户

% matrix_in是输入矩阵

% matrix_out是输出

矩阵function [matrix_out] = randmatrix(matrix_in)

[line column] = size(matrix_in);

matrix_out=zeros(line,column);

for i=1:line

seed=randperm(column);

matrix_out(i,:)= matrix_in(i,seed);

endend

10楼:匿名用户

n=100;

a=;

fork=1:n

a(k,:)=randperm(10);

end;

id=1;

sum(a==id)

11楼:

是的 matlab程序内核是c语言 m文件是ascii码文本

12楼:段干睿思彤瑗

a=randperm(10);

%a为1~10随意打乱顺序

b=[1,3,5,7,9];

%b为一组下标数据

c=a(b);

%将矩阵中对应下标的数据取出,结果存在c矩阵中(c为a矩阵的第[1,3,5,7,9]位)

d=sort(c);

%并对c矩阵由小到大排列,结果存在d矩阵中

在matlab中如何求一个向量内各个元素之和

13楼:匿名用户

其实很简单,只要用命令sum就ok了

你的问题只要这样就解决了:sum(a)回车

再告诉你一些简单的命令吧 mean平均值 diff微分 round四舍五入,有什么问题,发我邮箱adfaws@163.***

在matlab中怎样把两个向量的对应元素相乘得到新的向量

14楼:

t=0:0.1:5*pi;%范围

y=exp(-t/4).*sin(3*t);%注意中间是.*

y0=exp(-t/4);%两条包络线

y1=-y0;

plot(t,y,'+r',t,y0,'-b',t,y1,'-b');

15楼:情系渭水

用点乘就可以了

c=a.*b

问题解决了

16楼:岚之风飞

不需要函数,用c=a.*b就行,意思是做阵列乘法,即对应项相乘。而a*b是作矩阵乘法。

MATLAB中如何计算这种排列组合

1楼 匿名用户 第一题程序 1 nchoosek 51 18 nchoosek 54 18 结果 0 7121 第二题程序 3 18 nchoosek 54 18 结果 3 9971e 006 如何利用matlab把多组向量排列组合。 25 2楼 匿名用户 生成全排列可以用perms函数,把各向量放...

Matlab如何求数的排列组合,Matlab如何求16个数的排列组合 10

1楼 1 数据都是 n1 n2 这种形式?比如n 10,对应的就是 101 102 ? 2 最后这句话 从这些数列中选取4个然后从选取的4个数列中任选一个列出所有的排列组合 不明确,详细说明一下。 请教 如何用matlab将n个数的所有排列组合 2楼 一个扫描周期一个输出是可以,但你不需要所有的输出...