在Octave中交换向量/矩阵中的两个元素非常简单: x='abcde'; x([4,1])=x([1,4]) x = dbcae 不幸的是,我还没有找到在匿名函数中执行此操作的方法。尽管下面的函数在语法上是正确的,但它只返回交换的两个元素,而不是整个x向量: f=@(x)(x([4,1])=x([1,4])) f(x) ans = ad 是否有一种方法可以通过匿名方法使用匿名函数来实现所需的行为?可以使用匿名函数以这种方式交换几个元素吗? 我可以创建一个索引向量:f=@(x)x([4,2,3,1,5]),但是动态创建这样的向量也可能会占用很多字节。
作为练习,我使用x86汇编语言创建了一个简单的解决方案来应对这一挑战。我正在Windows上使用FASM运行它。这是我的源代码: format PE console entry start include 'WIN32A.inc' section '.text' code executable start: push char ; Start at 'A' call [printf] ; Print the current letter 4 times call [printf] call [printf] call [printf] inc [char] ; Increment the letter cmp [char], 'Z' ; Compare to 'Z' jle start ; …