字符与文本

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

用单引号输入文本至MATLAB。例如,

    s = 'Hello'
    

结果不是我们迄今为止处理过的数字矩阵或数组。它是一个1*5的字符数组。

在内部,字符是以数字存储的,而不是用浮点格式。语句

    a = double(s)
    

把字符数组转换为包含每个字符ASCII码的浮点表示的数字矩阵。

    a =
        72    101    108    108    111
    

语句

    s = char(a)
    

把变化逆转。

把数字变成字符使你能在计算机上调查不同字体。在ASCII字符集中可打印的字符是由32:127的整数表示的。(小于32的整数表示不可打印的控制字符。)这些整数编排在一个恰当的6*16数组里。

    F = reshape(32:127,16,6)';
    

在扩展ASCII码中的可打印字符用F+128表示。当这些整数翻译成字符时,结果决定于当前所用字形。输入语句

    char(F)
    char(F+128)
    

然后改变用于MATLAB命令窗口的字形。从File菜单选择Preferences。一定要尝试SymbolWingdings字体,若你的计算机中存在该字体。这是可能得到的某种输出的例子。

    !"#$%&'()*+,-./
    0123456789:;<=>?
    @ABCDEFGHIJKLMNO
    PQRSTUVWXYZ[\]^_
    `abcdefghijklmno
    pqrstuvwxyz{|}~\x7f
    °¢§·¶ß®©TM´¨ÆØ
    \xb0 ±¥µ¹²³½ªº¾æø
    ¿¡¬Ýý«»...þÀÃÕ
    ---""`'÷Þÿ\xd9 \xda ¤\xde \xdf 
    ·ÂÊÁËÈÍÎÏÌÓÔ
    ÒÚÛÙ\xf5 ~¯\xf9 \xfa °¸\xfd \xfe \xff 
    

用方括号把文本变量连接成更长的字符串。语句

    h = [s, ' world']
    

把字符串水平地连接起来并产生

    h =
       Hello world
    

语句

    v = [s; 'world']
    

把字符串另起一行连接并产生

    v =
       Hello
       world
    

注意,在h里,字母'w'前必须插入空格,在v中,两个词必须等长。得到的两个数组都是字符数组;h是1*11的,v是2*5的。

要改变包含不同长度行的文本体,有两个选择--填补字符的数组或字符串地单元数组。char函数允许任何长度的语句,添加空格到每行以使它们具有相同长度,生成一个独立成行的字符串数组。例如,

    S = char('A','rolling','stone','gathers','momentum.')
    

生成一个5*9的字符数组。

    S =
    A
    rolling  
    stone
    gathers  
    momentum.
    

S的前四行里,每行都有足够的空格使得各行等长。另一种选择是,把文本保存到单元数组中。例如,

    C = {'A';'rolling';'stone';'gathers';'momentum.'}
    

是一个5*1的单元数组。

    C = 
        'A'
        'rolling'
        'stone'
        'gathers'
        'momentum.'
    

用下面语句可以把一个填补字符数组转换成字符串单元数组

    C = cellstr(S)
    

用下面语句把过程逆转

    S = char(C)