You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何将41×41 cell处理为1×40结果并求和?

问题解决:生成1×40的全40数组并求和

首先,你的代码存在两个核心问题:

  1. 循环中每次赋值会直接覆盖ccc,无法累积生成数组(如果你的实际代码是ccc(cc) = ...,那会得到1×41的数组——因为length(isSmaller)对41×41的cell返回41,循环会跑满41次);
  2. 你需要的是1×40的结果,因此需要限制循环次数或对生成的数组做截取处理。

下面是几种可行的解决方案:

方案1:修正循环并截取结果

先生成包含41个40的数组,再截取前40个元素得到目标结果:

% 初始化数组存储每行计算结果
ccc = zeros(1, size(isSmaller, 1));
for cc = 1:size(isSmaller, 1)
    % 每行1的个数固定为41,减1后得到40
    ccc(cc) = sum(isSmaller{cc,:} == 1) - 1;
end
% 截取前40个元素,得到1×40的目标数组
ccc_40 = ccc(1:40);
% 对数组求和
total_sum = sum(ccc_40);

方案2:直接循环40次

无需后续截取,直接循环40行生成目标数组:

% 初始化1×40的空数组
ccc_40 = zeros(1, 40);
for cc = 1:40
    ccc_40(cc) = sum(isSmaller{cc,:} == 1) - 1;
end
% 求和
total_sum = sum(ccc_40);

方案3:无循环高效实现

因为所有cell元素都是1,每行的计算结果固定为40,可直接构造数组跳过循环:

% 直接生成1×40的全40数组
ccc_40 = repmat(40, 1, 40);
% 或者更简洁的写法
ccc_40 = 40 * ones(1, 40);
% 求和,结果固定为40×40=1600
total_sum = sum(ccc_40);

内容的提问来源于stack exchange,提问作者SH_IQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:22:03