標籤:

有沒有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 |