找到并保存相同的矩阵中的行

2视图(30天)
莫先生
莫先生 2017年11月3日
评论道: 莫先生2017年11月4日
嗨,假设我有一个(m * n)矩阵,如。
= (
3 2 3.5
2 2 3.5
4 2 3.5
2 3 3.5
3 3 3.5
4 3 3.5
2 4 3.5
3 4 3.5
4 4 3.5
3 2 4.5
2 2 4.5
4 2 4.5
2 3 4.5
3 3 4.5
4 3 4.5
2 4 4.5
3 4 4.5
4 4 4.5
3 2 5.5
2 2 5.5
4 2 5.5
2 3 5.5
3 3 5.5
4 3 5.5
2 4 5.5
3 4 5.5
4 4 5.5
12 22 7.5
13 16 8.9);
我也做了一个矩阵A的形象。有行,第一和第二成员在这些行是相同的第一和第二成员在其他行分别为例
[(1,1),(1,2)]= =[(10,1)、(2)]= =[(19日1)、(19日2))
在橙色高亮显示在上面的图片中,相同的其他成员也在第一和第二列在不同的行突出显示在相同的颜色。
28日和29日行没有相同的矩阵中的行没有突出显示颜色。
我想找到一个方法来保存这些相同的行与他们的成员在各列分别在不同的新矩阵。
这里有9个不同的颜色,所以我们必须有9 New_A矩阵。
28日和29日行也没有相同的行矩阵A,所以我想28日和29日行保存在一个名为B的新矩阵例如矩阵。
最后我想达到这些矩阵,如下所示
New_A1 = [3 2 3.5;
3 2 4.5;
3 2 5.5);
New_A2 = [2 2 3.5;
2 2 4.5;
2 2 5.5);
New_A3 = [4 2 3.5;
4 2 4.5;
4 2 5.5);
New_A4 = [2 3 3.5;
2 3 4.5;
2 3 5.5);
New_A5 = [3 3 3.5;
3 3 4.5;
3 3 5.5];
New_A6 = [4 3 3.5;
4 3 4.5;
4 3 5.5];
New_A7 = [2 4 3.5;
2 4 4.5;
2 4 5.5];
New_A8 = [3 4 3.5;
3 4 4.5;
3 4 5.5);
New_A9 = [4 4 3.5;
4 4 4.5;
4 4 5.5];
B = [12 22 7.5;
13 16 8.9);
我想知道如果任何人有任何想法如何做呢?谢谢你的帮助。
有任何代码告诉有多少相同的行和矩阵A有多少不同的行吗?
例如在矩阵有9相同的行和2不同的行

接受的答案

塞德里克Wannaz
塞德里克Wannaz 2017年11月4日
另外:
(~,~,ic) =独特((:,1:2),“行”);
组= splitapply (@ (x) {x}, ic);
生产
组=
11×1细胞数组
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{3×3双}
{1×3双}
{1×3双}
然后
isAlone = cellfun (@ (x)大小(x, 1),组)= = 1;
合并= vertcat(组{isAlone});
组=组(~ isAlone);
在哪里 是所有组的细胞数组的行并不是唯一的,还有呢 合并后的 是其他所有的合并。
7评论

登录置评。

答案(1)

每•艾萨克森
每•艾萨克森 2017年11月3日
编辑:每•艾萨克森 2017年11月4日
我有一个想法,(这两个左边的列包含整数)
> > [C ia ic] =独特((:,1:2),“行”);
> > (ic = = 1,:)
ans =
2.0000 2.0000 3.5000
2.0000 2.0000 4.5000
2.0000 2.0000 5.5000
哪里有一个以上的发生 1 集成电路
遍历所有的数字与多个事件 集成电路
发生一个弥补 B
最后, “New_A9” 我引用你力量 教程:为什么变量不应该叫动态(eval) (适当的笑脸)
实现 与版本比R2015b塞德里克答案为更新版本)
(ia ~, ic) =独特((:,1:2),“行”);
N = histc (ic, 0.5 +(0:长度(ia)));
N =重塑(N, 1, []);
新=细胞(1,sum (N > = 2));
B =南(数目(N = = 1), 3);
第九= 0;
jj =找到(N > = 2)
第九=第九+ 1;
新{第九}= (ic = = jj:);
结束
第九= 0;
jj =找到(N = = 1)
第九=第九+ 1;
:B (ix) = (ic = = jj:);
结束
它的繁殖输出的例子。可能需要更多的测试。
> >谁新B
的名字大小字节属性
B2 x348
1 x91656年细胞
> >新{4}
ans =
3.0000 2.0000 3.5000
3.0000 2.0000 4.5000
3.0000 2.0000 5.5000
> > B
B =
12.0000 22.0000 7.5000
13.0000 16.0000 8.9000
5个评论
莫先生
莫先生 2017年11月4日
编辑:莫先生 2017年11月4日
再次感谢你的帮助。我有一个问题。这段代码编写矩阵a。我可以用这个代码的新矩阵的新的大小和新成员,从矩阵a是不同的吗?

登录置评。

类别

找到更多的在矩阵和数组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!