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

Dav*_*nan 5 arrays matlab cell-array

我知道我可以这样写:

tmp = arr{i}
arr{i} = arr{j}
arr{j} = tmp
Run Code Online (Sandbox Code Playgroud)

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

arr[i], arr[j] = arr[j], arr[i]
Run Code Online (Sandbox Code Playgroud)

Lui*_*ndo 8

标准的,惯用的方式:

使用索引向量:

arr([i j]) = arr([j i]); %// arr can be any array type
Run Code Online (Sandbox Code Playgroud)

无论arr是单元数组,数字数组还是字符串(char数组),这都有效.


不推荐(但可能):

如果您想使用更类似于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
Run Code Online (Sandbox Code Playgroud)

  • @DavidHeffernan这是迷你教程:方括号`[]`用于连接数组,圆括号`()`用于函数调用和访问元素,大括号`{}`用于访问元素的*content*(主要是与单元阵列相关)和串联到单元阵列中. (2认同)