MATLAB中数字拆分及二进制字符串1的统计技术问询
MATLAB 问题解答
问题1:将数字拆分为空格分隔的数字形式
如果输入是数值类型(比如 1234),可以先转成字符串,再拆分每个字符后用空格拼接:
num = 1234; % 转字符串后拆分每个字符 char_array = split(num2str(num), ''); % 用空格连接成目标格式 result = strjoin(char_array, ' ');
也可以用正则表达式一步完成:
result = strtrim(regexprep(num2str(num), '(.)', '$1 '));
如果输入本身就是字符串(比如 '1234'),直接跳过转字符串步骤即可。
问题2:统计二进制字符串中1的个数
按你的思路实现(拆分后求和)
要拆分二进制字符串,直接用 split 函数拆分每个字符,再转换为数值后求和:
bin_str = '10100011'; % 拆分字符串为单个字符数组 split_chars = split(bin_str, ''); % 将字符转成数值('0'转0,'1'转1)后求和 count = sum(double(split_chars) - double('0'));
更高效的实现方式
不需要拆分字符串,直接用MATLAB内置函数可以更简洁高效:
- 方法1:用
strcount直接统计'1'的出现次数
count = strcount(bin_str, '1');
- 方法2:用
nnz统计逻辑数组的非零元素个数
count = nnz(bin_str == '1');
这两种方法在处理长字符串时,性能比拆分求和更好。
内容的提问来源于stack exchange,提问作者Nourhan Khalil
相关产品推荐
相关产品推荐

