matlab里如何把一个矩阵相同列向量的列序号依次输出出来?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里如何把一个矩阵相同列向量的列序号依次输出出来?相关的知识,希望对你有一定的参考价值。

例如如下矩阵:
R = [1 1 1 0 0 0 0 0 0 0 0;
1 1 1 0 0 0 0 0 0 0 0;
1 1 1 0 0 0 0 0 0 0 0;
0 0 0 1 1 1 0 0 0 0 0;
0 0 0 1 1 1 0 0 0 0 0;
0 0 0 1 1 1 0 0 0 0 0;
0 0 0 0 0 0 1 0 0 0 0;
0 0 0 0 0 0 0 1 0 0 0;
0 0 0 0 0 0 0 0 1 0 0;
0 0 0 0 0 0 0 0 0 1 0;
0 0 0 0 0 0 0 0 0 0 1];
就希望输出1,2,3,4,5,6,7,8,9,10,11这样的结果

matlab中的unique 函数可以实现检查矩阵中有多少个不同的类型数组,具体实现如下:

[a, b, c] = unique(R, 'row', 'stable');
for i = 1:size(a,1)-1
posi = b(i):b(i+1)-1;
end
%其中a就是不同行的类型;
%b就是a中对应在R中的起始行的位置;
%c就是R中每行对应在a中的检索值
%pos里面存的就是你要的结果。
参考技术A 在matlab中让矩阵按某一列排列,需要用到排序算法对某一列数据排序,然后在排序算法的if判断句中,依次交换矩阵两行内容。
以题目中矩阵为例,可以利用冒泡法对第三列数据排序,实现程序如下:
a=[5 7 8;4 6 1;8 0 7];
n=length(a);b=[];
for i=1:n-1
for j=1:n-i
if(a(j,3)>a(j+1,3))
b=a(j,:);a(j,:)=a(j+1,:);a(j+1,:)=b;
end
end
end
disp(a)

以上是关于matlab里如何把一个矩阵相同列向量的列序号依次输出出来?的主要内容,如果未能解决你的问题,请参考以下文章

在matlab中,如何将struct类型转化为矩阵类型?

matlab中的mean函数是啥意思啊,如何使用

matlab plot函数的意义是啥?

matlab中plot的用法

matlab中plot函数用法

MATLAB如何提取某一矩阵中某一列的部分数据?