把字符串变元赋给函数

优质
小牛编辑
129浏览
2023-12-01

可以编写认可字符串变元的MATLAB函数,而无须用括号或引号。也就是说,MATLAB把

    foo a b c
    

理解为

    foo('a','b','c')
    

然而,当用非引用形式时,MATLAB不能返回变元。例如,

    legend apples oranges
    

在一幅图创立一个图例并用字符串applesoranges作为标签。若想legend命令返回它的输出变元,则必须用引号。

    [legh,objh] = legend('apples','oranges');
    

此外,若有任何变元不是字符串时,你都不能用非引号形。

用编码建立字符串变元

可以用引号形式在代码中建立字符串变元。以下例子处理多个数据文件August1.dat, August2.dat, 等等。它用函数int2str,该函数把整数变成字符来建立文件名。

    for d = 1:31
       s = ['August' int2str(d) '.dat'];
       load(s) 
       % Code to process the contents of the d-th file
    end
    

一条值得注意的注释

在无引号的句法使用上去颇方便的同时,它也可以在不导致MATLAB产生错误的情况下而被不正确的使用。例如,给出一个矩阵A,

    A =
         0 -6 -1
         6     2 -16
    -5    20   -10
    

eig返回A的特征值。

    eig(A)
    ans =
    -3.0710
    -2.4645+17.6008i
    -2.4645-17.6008i
    

下面的语句是不允许的,因为A不是字符串,然而MATLAB不会产生错误。

    eig A
    ans =
        65
    

MATLAB实际上取出与字母A相等的ASCII码数值的特征值(是65)。