作业帮 > 综合 > 作业

matlab中,如何计算大矩阵中小矩阵的个数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 19:24:26
matlab中,如何计算大矩阵中小矩阵的个数
例如,在大矩阵
12 12
24 54
4 15
0 0
546 54
54 0
0 0
0 0
中计算小矩阵[0 0]的个数
M=[12 12
24 54
4 15
0 0
546 54
54 0
0 0
0 0];
N = [0 0];
[nrow ncol] = size(M);
n = 0;
for i = 1:nrow-1
if sum(M(i,:)==N) == 2
n = n + 1;
end
end
% n就是[0 0]的个数.
再问: 如果是在元胞数组中计算[0 0]的个数又应该如何写呢?
再答: 把元胞数组元素引用出来作为 M 即可。 具体把数据贴出来。
再问: 就是不知道怎么引用,元胞数组的数据可以赋值到一般的数组吗 ,老是出错,数据在别的电脑上,,呜呜,我是新手不会贴数据,,,就是一个外面19*19 里面2780*2的元宝数组 需要返回小元胞有[0,0]的行数 然后进行19*19个表的匹配,看谁的匹配度高
再答: 估计你是参加建模竞赛的,做的B题。 这个方法是你们思考的,还是老师提示的? (没数据,代码就难以具体)
再问: 当然是自己思考啦,老师什么也不跟我们说 不用具体数据啊,刚才说了,目的就是写出程序,让系统自动从元胞数组中导入我们想要的数据进行运算,例如,计算元胞数组I{1,1}中[0,0]的个数,应该如何书写程序呢
再答: 假设元胞为C,大小为pxq. n = zeros(p,q); N = [0 0]; for r =1:p for s = 1:q M = C{r,s}; %花括号 [nrow ncol] = size(M); for i = 1:nrow-1 if sum(M(i,:)==N) == 2 n(r,s) = n(r,s) + 1; end end end end % n就是[0 0]的个数.
再问: 换用其他方法做了