EDA365电子论坛网

标题: Matlab如何判断一个变量是否定义,是否存在 [打印本页]

作者: jiulquq    时间: 2020-4-29 10:14
标题: Matlab如何判断一个变量是否定义,是否存在
引用未定义的变量会出错,有没有办法在引用之前判断它是否已经定义呢,(指matlab的自动定义)
, z8 N! p+ C7 U: e7 V7 ~我试过! D1 w% P: a( x6 q. G
var==[]7 g# \4 e) L$ Y6 f+ O8 E9 l

) U7 R! I0 q$ h' w( \5 Jisempty(var). s3 s) ?, P9 t: P' @
等都不通用。& s$ @% t% `+ r7 O5 P: ~
6 y0 @' O2 @; R
其实我主要是想用在函数变参数上,感觉用nargin判断参数个数不直观- Q3 [3 f2 A5 g2 k5 m
想用另一种办法直接判断某个参数是否已定义,若无定义,则给它默认值。
( ~% {1 X$ k! z, n
作者: yin123    时间: 2020-4-29 13:29
可以试试exist,因为isempty是判断一个变量是否为空,但是前提是这个变量是存在的。
作者: ExxNEN    时间: 2020-4-29 13:29
用exist可以,如下:
9 R. ^  Z) d3 `4 D. F, U. X
, p# z1 X$ j: n$ v/ y! ?3 y1 Zfunction out = fun (in, P)
# A/ F$ i# l$ C1 b* v6 r# p" u6 ]. L% if isempty(P) % 失败
8 i5 z- v! o# s1 d% if P == [] % 失败: J- C% C; C; ?" N. f
if ~exist('P','var') % 用'var'限定下更好,不用也可以. j4 J; E1 r- K4 w$ t
% if nargin<2 % 通过,但我不喜欢8 A: c0 X/ s4 Q  M. N: u
    % 使用参数P的默认值2 e8 t" K; }% N, _
else
; t6 v6 c! n6 l. B) G7 f( \4 c    % 使用传入的参数P2 ^6 K+ @3 g1 t1 U
end& {. \; s( f0 h* M/ o7 ^' Q) B: W* ~; o
% ……- P' h  q9 E3 [9 ~1 }
% matlab6.5 测试通过




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2