Matlab(含Octave/Scilab)如何像Python一样实现元素交换?
在MATLAB/Octave/Scilab中交换变量的实用方法
嘿,刚上手MATLAB就想着对比Python的便捷写法,这个思路超赞!我来给你梳理下不同工具里的变量交换方案:
1. MATLAB的便捷实现
MATLAB没有Python那种直接x, y = y, x的语法,但从R2020a版本开始,你可以用元胞数组展开的方式实现类似的简洁交换:
x = 5; y = 10; [x, y] = {y, x}{:};
如果你的MATLAB版本更早,deal函数是个兼容所有旧版本的经典选择:
x = 5; y = 10; [x, y] = deal(y, x);
2. 无临时变量的经典数学法(全版本通用)
要是你需要兼容所有MATLAB版本,甚至Octave/Scilab,数值类型的变量可以用纯数学运算来交换,完全不需要临时变量:
加减交换法(无限制,推荐)
x = 5; y = 10; x = x + y; y = x - y; x = x - y;
乘除交换法(注意:变量不能为0,否则会触发除以0的错误)
x = 5; y = 10; x = x * y; y = x / y; x = x / y;
3. Octave/Scilab的专属便捷写法
Octave对Python风格的语法支持很友好,直接就能用和Python一模一样的写法:
x = 5; y = 10; x, y = y, x;
Scilab则可以通过列表赋值实现简洁交换:
x = 5; y = 10; [x, y] = [y, x];
简单总结下:新版本MATLAB用元胞展开最省心;旧版本选deal函数;Octave直接照搬Python写法就行;如果要完全无临时变量且跨平台,加减交换法是最稳妥的选择~
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

