多年来,在阅读其他代码时,我遇到并收集了一些MATLAB语法的例子,这些例子起初可能不常见且违反直觉.请随时评论或补充此列表.我用r2006a验证了它.
MATLAB 总是将函数的第一个输出参数(如果它至少有一个)返回到其调用者工作空间,如果调用函数而不返回参数,myFunc1(); myFunc2();则调用者工作空间仍然会包含第一个输出myFunc2();为"不可见" ans变量.如果它ans是一个参考对象,它可以发挥重要作用- 它将保持活力.
set([], 'Background:Color','red')
Run Code Online (Sandbox Code Playgroud)
MATLAB有时很宽容.在这种情况下,将属性设置为对象数组也可以使用无意义属性,至少在数组为空时.这种阵列通常来自harray = findobj(0,'Tag','NotExistingTag')
myArray([1,round(end/2)])
Run Code Online (Sandbox Code Playgroud)
end关键字的使用可能看起来不干净,但有时非常方便而不是使用length(myArray).
any([]) ~= all([])
Run Code Online (Sandbox Code Playgroud)
惊人地any([])返回false并all([])返回true.我一直认为那all更强大any.
编辑:
与不为空的参数all()返回true给值的子集为其中any()返回true(例如真值表).这意味着any() false暗示all() false.MATLAB以[]参数的形式违反了这个简单的规则.
洛伦还在博客上写了这篇文章.
Select(Range(ExcelComObj))
Run Code Online (Sandbox Code Playgroud)
程序样式COM对象方法调度.不要奇怪exist('Select')回报为零!
[myString, myCell]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,MATLAB将字符串变量隐式转换myString为单元格类型{myString}.如果我不希望它这样做,它也可以工作.
[double(1.8), uint8(123)] => 2 123 …Run Code Online (Sandbox Code Playgroud) matlab ×1