计算矩阵中的行数-Matlab
我已经寻找了很长一段时间了,但是我仍然没有找到一种有效计算矩阵行数的方法。有一些解决方案,但没有一个能满足我的需求。上面的代码可以完成这项工作,但是如果您处理的是一个大矩阵,则需要花费太多的时间。我想要的输出与变量cont2一样,即长度等于a中行数的向量。下面是一个示例:计算矩阵中的行数-Matlab,matlab,vectorization,Matlab,Vectorization,我已经寻找了很长一段时间了,但是我仍然没有找到一种有效计算矩阵行数的方法。有一些解决方案,但没有一个能满足我的需求。上面的代码可以完成这项工作,但是如果您处理的是一个大矩阵,则需要花费太多的时间。我想要的输出与变量cont2一样,即长度等于a中行数的向量。下面是一个示例: A = [ 1 2 3 ; 4 3 5; 1 2 3; 1 2 3; 4 3 5; 5 2 1; 3 2 1; 3 5 1]; [rows,~] = size(A); cont2 = zeros(ro
A = [ 1 2 3 ; 4 3 5; 1 2 3; 1 2 3; 4 3 5; 5 2 1; 3 2 1; 3 5 1];
[rows,~] = size(A);
cont2 = zeros(rows,1,'single');
for i = 1:rows
cont = 0;
for j = 1:rows
if A(i,:) == A(j,:)
cont = cont + 1;
end
cont2(i) = cont;
end
end
%结果:
cont2=
3
2
3
3
2
1
1
1
来点怎么样
这会将每一行相互比较,并对匹配的数量求和,以生成所需的结果
同样,您可以使用将每一行缩减为唯一的整数标签,然后比较这些标签:
[~, ~, u] = unique(A, 'rows');
result = sum(bsxfun(@eq, u, u.'), 2);
或用于计算每个标签出现的次数:
[~, ~, u] = unique(A, 'rows');
c = histc(u, 1:max(u));
result = c(u);
[~, ~, u] = unique(A, 'rows');
c = histc(u, 1:max(u));
result = c(u);