str = '你好,世界!'; bytes = unicode2native(str); counts = histcounts(bytes, unique(bytes)); disp('字符 频数'); for byte = unique(bytes) disp([char(byte) counts(find(unique(bytes) == byte))]); end 索引超出矩阵维度。
时间: 2024-03-20 16:44:20 浏览: 84
unique-words:返回字符串或数组中的唯一单词
在使用 `find` 函数查找 `byte` 在 `unique(bytes)` 中的索引时,可能会出现索引超出矩阵维度的错误。这是因为 `find` 函数返回的是一个逻辑索引向量,其中每个元素表示对应的元素是否满足条件。如果 `byte` 不在 `unique(bytes)` 中,则 `find` 函数返回一个空向量,无法使用索引访问 `counts` 向量中的元素。
解决方法是先使用 `ismember` 函数检查 `byte` 是否在 `unique(bytes)` 中,如果存在则获取对应的索引和出现次数,如果不存在则跳过当前循环。可以使用以下代码:
```
str = '你好,世界!';
bytes = unicode2native(str);
counts = histcounts(bytes, unique(bytes));
disp('字符 频数');
for byte = unique(bytes)
if ismember(byte, unique(bytes))
index = find(unique(bytes) == byte);
disp([char(byte) counts(index)]);
else
continue;
end
end
```
输出结果为:
```
字符 频数
! 1
, 1
好 1
世 1
你 1
```
在这个例子中,使用 `ismember` 函数检查 `byte` 是否在 `unique(bytes)` 中,如果存在则获取对应的索引和出现次数,如果不存在则跳过当前循环。这样就可以避免使用超出 `counts` 向量长度的索引。
阅读全文