arrays - 是否有一种惯用的方法来交换单元格数组中的两个元素?

标签 arrays matlab cell-array

我知道我可以这样写:

tmp = arr{i}
arr{i} = arr{j}
arr{j} = tmp

但是有没有更简单的方法呢?例如,在 Python 中我会写:

arr[i], arr[j] = arr[j], arr[i]

最佳答案

标准、惯用的方式:

使用索引向量:

arr([i j]) = arr([j i]); %// arr can be any array type

无论 arr 是元胞数组、数值数组还是字符串(字符数组),这都适用。


不推荐(但可能):

如果你想使用更类似于 Python 的语法(使用 元素列表 而不是索引向量),你需要 deal功能。但是生成的语句更复杂,并且根据 arr 是元胞数组还是标准数组而有所不同。所以不推荐(用于交换两个元素)。我只是为了完整性而包含它:

[arr{i}, arr{j}] = deal(arr{j}, arr{i}); %// for a cell array
[arr(i), arr(j)] = deal(arr(j), arr(i)); %// for a numeric or char array

关于arrays - 是否有一种惯用的方法来交换单元格数组中的两个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25723019/

相关文章:

PHP array_search 始终返回数组的第一个键

arrays - 在 AX 中输入数字时 AH 中的数字错误

matlab - matlab 'fitctree'的CART算法为什么考虑属性顺序?

matlab - 如何做气泡图?

Python:使用负函数比较元胞数组

java - String vs Char Array vs String Builder(效率表现)

arrays - 如何创建由指针组成的二维字段

arrays - 如何在 MATLAB 中的 for 循环内创建比率数组?

arrays - MATLAB:如何拆分不同分隔符数字的元胞数组?

arrays - 在 Matlab 中结合 cellfun 和 subs