有沒有MATLAB版的三元運算符?
三元運算符_百度百科
如果滿足條件, 就返回a值, 否則, 返回b值.
不要使用if else語句, 有沒有函數式的寫法? 最好一行搞定.
比如將下面if else語句翻譯成函數式:
if pi &> 1
c = eye(3);
else
c = magic(5);
end
直接的運算符似乎沒有,可以考慮借用 a:b:c 三元算符造一個類似的
在路徑中創建一個 @function_handle 類文件夾
mkdir @function_handle
在其中創建函數 colon.m
function varargout = colon(test, varargin)
[varargout{1 : nargout}] = varargin{2 - test}();
調用起來就是:
&>&> c = (pi &> 1) : (@() eye(3)) : (@() magic(5))
c =
1 0 0
0 1 0
0 0 1
適合於分段函數和相同大小的矩陣,不適合不同大小的矩陣;
f =@(x) (p&>1)*(x) + (p&<=1)*(x^2);
類似這樣的算可行么?
iif = @(varargin) varargin{2 * find([varargin{1:2:end}], 1, first)}();
聽說是「醜陋而且低效「的。。
There is no out-of-the-box ternary operator in MATLAB.
推薦閱讀:
※APPs(004)Matlab出圖真的丑嗎?(b)
※(新手提問)matlab中@的含義?
※XML和MATLAB交互的基本操作[2]:寫入XML
※【IoT:從零開始的MATLAB學習】 0 序言
※matlab把日期轉換成數字以後輸出到csv文件,數字會四捨五入?
TAG:MATLAB |