new_idx = unique(cellfun(@(x) char(x), new_idx, 'UniformOutput', false)); 错误使用 cell/unique>celluniqueR2012a (第 249 行) 元胞数组输入 A 的元素必须为字符向量(字符类的行向量)。 出错 cell/unique (第 89 行) [varargout{1:nlhs}] = celluniqueR2012a(varargin{:});
时间: 2023-12-16 21:06:21 浏览: 128
这个错误提示意味着你传递给 `unique` 函数的元胞数组 `new_idx` 中包含非字符向量的元素。因此,你需要将元胞数组中的所有元素都转换为字符向量。
你可以尝试修改代码,将 `cellfun` 函数中的回调函数从 `char` 改为 `string`,以便将所有元胞数组中的元素都转换为字符串:
```
new_idx = unique(cellfun(@(x) string(x), new_idx, 'UniformOutput', false));
```
如果你使用的是旧版本的 MATLAB,可能不支持 `string` 函数,你可以改用 `cellstr` 函数将每个元素转换为字符向量:
```
new_idx = unique(cellfun(@(x) cellstr(x), new_idx, 'UniformOutput', false));
```
这样做应该可以解决你的问题。
相关问题
new_idx = unique(cellfun(@(x) string(x), new_idx, 'UniformOutput', false)); new_x = x(new_idx,:); 错误使用 cell/unique (第 85 行) 元胞数组输入必须为 字符向量元胞数组。 ,如何改正
可以尝试将 `cellfun` 函数中的 `string(x)` 改为 `string(x{:})`,即将每个元胞中的内容取出来转换成字符串再进行去重。修改后的代码如下:
```
new_idx = unique(cellfun(@(x) string(x{:}), new_idx, 'UniformOutput', false));
new_x = x(new_idx,:);
```
这样应该就可以避免出现 "元胞数组输入必须为字符向量元胞数组" 的错误了。
new_idx = unique(cellfun(@(x) string(x{:}), new_idx, 'UniformOutput', false)); new_x = x(new_idx,:); 此类型的变量 不支持使用花 括号进行索 引。 出错 @(x)string(x{:}) ,如何改正
这个错误提示说明了 `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` 数组中对应的行。
阅读全文