如何用双层for循环正确统计MATLAB动态数组中指定数值n的出现次数
实现方案
核心逻辑
你需要在矩阵a、b生成完成后插入双层for循环逻辑,步骤如下:
- 分别初始化矩阵a、b的计数变量,初始值为0
- 外层循环遍历所有行,内层循环遍历所有列,逐个匹配元素是否等于目标值n
- 循环结束后输出统计结果即可
完整可运行代码
T= 1; while (T==1) r = input('Enter number of rows ') ; c= input(' Enter number of columns '); n = input('Enter range of random 0-9 '); disp(n); a = uint16(rand(r,c)*n+1); fprintf(' n = %5d \n', n); disp('Cool Matrix A'); disp(a); b = uint16(rand(r,c)*n); disp('Cooler Matrix B ' ); disp(b); % 以下是新增的计数逻辑 count_a = 0; count_b = 0; % 外层遍历行 for i = 1:r % 内层遍历列 for j = 1:c if a(i,j) == n count_a = count_a + 1; end if b(i,j) == n count_b = count_b + 1; end end end % 输出统计结果 fprintf('矩阵A中数值%d的出现次数为:%d\n', n, count_a); fprintf('矩阵B中数值%d的出现次数为:%d\n', n, count_b); T= input('Enter 1 to continue \n'); end
逻辑说明
- 代码适配动态大小的数组,不管输入的行r和列c是多少,都会遍历全部元素
- 即使没有匹配到对应数值,计数器初始值为0,也能正确输出结果0
- 如果你只需要统计其中一个矩阵,删掉对应矩阵的计数判断和输出语句即可
内容的提问来源于stack exchange,提问作者Pablo Lares
相关产品推荐
相关产品推荐

