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

Matlab统计各ID的negative细胞数报错及后续统计需求求助

问题分析与解决方案

错误原因

报错行counts = accumarray([uidx, 2-data(:,2)], 1);的核心问题是:data(:,2)是单元格数组(cell array),Matlab不支持对单元格类型直接执行减法运算,因此触发Operator '-' is not supported for operands of type 'cell'错误。

修正后的代码实现

以下代码可完整实现需求:统计每个唯一ID的'negative'细胞数,同时统计符合条件的ID数量:

clc
clear
close all

data = {
'vajbfch07wu11y90'  'negative'
'ekvpmhqybu920hnr'  'negative'
'eddbdv5bsqggeydq'  'negative'
'eddbdv5bsqggeydq'  'negative'
'eddbdv5bsqggeydq'  'negative'
'eddbdv5bsqggeydq'  'negative'
'eddbdv5bsqggeydq'  'negative'
'eddbdv5bsqggeydq'  'negative'
'6vmhbj7041fe7xck'  'negative'
'6vmhbj7041fe7xck'  'negative'
'6vmhbj7041fe7xck'  'negative'
'6vmhbj7041fe7xck'  'negative'
'j5d6dgzbeynyyg02'  'negative'
'j5d6dgzbeynyyg02'  'negative'
'j5d6dgzbeynyyg02'  'negative'
'v21tstcp164uya6g'  'negative'
'v21tstcp164uya6g'  'negative'
'brjmfpunj00rn92c'  'negative'
'brjmfpunj00rn92c'  'negative'
'mb8nggnegcwq9nqc'  'negative'
'vk4ga34492m01hwv'  'negative'
'vk4ga34492m01hwv'  'negative'
'vk4ga34492m01hwv'  'negative'
'vk4ga34492m01hwv'  'negative'
'd9hk2zeexhxp2h0v'  'negative'
'f93xk5sq60ehp34j'  'negative'
'f93xk5sq60ehp34j'  'negative'
'ypzzn212hqvwjtc9'  'negative'
'0q2mmnq0wb97z7bm'  'negative'
'jh8k1dd9g2p2d218'  'negative'
'2e5tr0scw89z68kg'  'negative'
'2e5tr0scw89z68kg'  'negative'
'5zb72reqnsxnzuca'  'negative'
'5zb72reqnsxnzuca'  'negative'
'5zb72reqnsxnzuca'  'negative' };

% 获取唯一ID及对应的分组索引
[uniqueIDs, ~, uidx] = unique(data(:,1));

% 将单元格字符串转换为逻辑数组,标记是否为'negative'
isNegative = strcmp(data(:,2), 'negative');
% 按ID分组求和,得到每个ID的negative数量
negativeCounts = accumarray(uidx, isNegative, [], @sum);

% 合并唯一ID与对应计数,输出结果
result = [uniqueIDs, num2cell(negativeCounts)];
disp('每个唯一ID对应的negative细胞数量:');
disp(result);

% 统计满足条件的ID数量
count_ge1 = sum(negativeCounts >= 1);
count_ge3 = sum(negativeCounts >= 3);

disp(['拥有1个及以上negative计数的ID数量:', num2str(count_ge1)]);
disp(['拥有3个及以上negative计数的ID数量:', num2str(count_ge3)]);

关键修正说明

  • 用strcmp(data(:,2), 'negative')将单元格数组的字符串比较转换为逻辑数组,彻底解决了单元格无法直接参与数值运算的问题。
  • 直接通过accumarray(uidx, isNegative, [], @sum)对每个ID对应的逻辑值求和,逻辑清晰,精准统计每个ID的'negative'数量。
  • 新增了统计1个及以上、3个及以上negative计数ID数量的逻辑,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:35:27