new_idx = unique(cellfun(@(x) string(x{:}), new_idx, 'UniformOutput', false)); new_x = x(new_idx,:); 此类型的变量 不支持使用花 括号进行索 引。 出错 @(x)string(x{:}) ,如何改正
时间: 2024-01-21 10:18:22 浏览: 65
这个错误提示说明了 `new_idx` 不是一个 cell 数组,因此不能对其使用花括号索引。你可以尝试使用 `string(new_idx)` 来将其转换为字符串数组,然后再进行去重操作,例如:
```
new_idx_str = string(new_idx);
new_idx_str = unique(new_idx_str);
new_x = x(new_idx_str,:);
```
这里将 `new_idx` 转换为字符串数组后,再使用 `unique` 函数对其进行去重操作。最后再使用去重后的索引 `new_idx_str` 来提取 `x` 数组中对应的行。
相关问题
new_idx = unique(cellfun(@(x) string(x), new_idx, 'UniformOutput', false)); new_x = x(new_idx,:); 错误使用 cell/unique (第 85 行) 元胞数组输入必须为 字符向量元胞数组。 ,如何改正
这个错误的原因是 `new_idx` 中的元素不是字符串类型,所以不能直接转换为字符串。你可以先将元素转换为字符串向量,然后再调用 `unique` 函数,例如:
```
new_idx = unique(cellfun(@(x) string(x), new_idx, 'UniformOutput', false));
new_x = x(new_idx,:);
```
如果你在转换为字符串向量时遇到了错误,可能是因为 `new_idx` 中有空元素或非字符串元素。你可以使用 `isempty` 和 `isstring` 函数来过滤掉这些元素,例如:
```
new_idx = unique(cellfun(@(x) isstring(x) && ~isempty(x), new_idx, 'UniformOutput', false));
new_x = x(new_idx,:);
```
new_idx_str = string(cell2mat(new_idx)); new_idx_str = unique(new_idx_str); new_x = x(new_idx_str,:); 无法将类型为 string 的值用作索引。怎么改正
在MATLAB R2016b及之后的版本中,可以使用 string 类型作为索引,但在早期版本中不支持。因此,如果你的MATLAB版本不支持,请尝试将 string 类型转换为 char 类型,然后再进行索引。你可以尝试以下代码:
```
new_idx_str = string(cell2mat(new_idx));
new_idx_str = unique(new_idx_str);
new_idx_char = char(new_idx_str); % 将 string 转换为 char
new_x = x(new_idx_char,:); % 使用 char 类型索引
```
这将把 `new_idx_str` 转换为 char 类型,然后在 `new_x = x(new_idx_char,:)` 中使用 char 类型索引。注意,这会将字符串转换为 char 类型,可能会丢失一些字符串的信息,如编码格式等。如果你需要保留这些信息,请使用更高版本的 MATLAB。
阅读全文