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这样的结果
[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里如何把一个矩阵相同列向量的列序号依次输出出来?的主要内容,如果未能解决你的问题,请参考以下文章