admin 管理员组文章数量: 1184232
2024年3月19日发(作者:oracle数据库关闭)
在MATLAB中使用LaTex字符
字符表
在text对象的函数中(函数title、xlabel、ylabel、zlabel或text),
说明文字除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就
可以在图形上添加希腊字母、数学符号及公式等内容。例如,
text(0.3,0.5,‘sin({omega}t+{beta})’)将在图形窗口的(0.3,0.5)位置得
到标注效果sin(ωt+β)。
Tex字符在输出一些数学公式时经常使用,它只能由类型为text的对象创
建。函数title、xlabel、ylabel、zlabel或text都能创建一个text对象,因
此Tex字符转义符(带“”的字符串)经常作为这些函数的输入参数。Tex字
符及其函数见下表。
函数字符
alpha
beta
gamma
delta
epsilon
zeta
eta
theta
vartheta
iota
kappa
lambda
mu
nu
xi
pi
rho
sigma
varsigma
tau
equiv
Im
otimes
cap
supset
int
rfloor
代表符号
函数字符
upsilon
phi
chi
psi
omega
Gamma
Delta
Theta
Lambda
Xi
Pi
Sigma
Upsilon
Phi
Psi
Omega
formall
exists
ni
cong
approx
Re
oplus
cup
subseteq
in
lceil
代表符号
函数字符
sim
leq
infty
clubsuit
diamondsuit
heartsuit
spadesuit
leftrightarrow
leftarrow
uparrow
rightarrow
downarrow
circ
pm
geq
propto
partial
bullet
div
neq
aleph
wp
oslash
supseteq
subset
o
nabla
代表符号
lfloor
perp
wedge
rceil
vee
langle
cdot
neg
times
surd
varpi
rangle
ldots
prime
0
mid
copyright
如果要输出希腊字母,可以使用texlabel函数将希腊字母的变量名转化为
希腊字母的函数,供函数title、xlabel、ylabel、zlabel或text使用。texlabel
转换MATLAB表达式为等价的Tex格式字符串。它处理希腊字母的变量名为实际
显示的希腊字母字符串。希腊字母的变量名为“”后面的字符串。例如:
>> texlabel('alpha')
ans =
{alpha}
>> text(0.5,0.5,'{alpha^2}')
>> text(0.5,0.5,texlabel('alpha^2'))
以上两条指令均在窗口中心产生
2
标注。
2. Tex字符格式
Tex字符还可以设置字体、颜色和位置。
(1)Tex字符的字体设置有如下6种。
①bf:设置字体为粗体字。
②it:设置字体为斜体字。
③sl:设置字体为斜体字,很少使用。
④rm:设置字体为正常字体。
⑤fontname{字体名}:设置字体名。例如:fontname{宋体}。
⑥fontsize{字体大小}:设置字体大小。例如:fontsize{16}。
每次设置时,it、sl、rm只能选择一种。
(2)Tex字符的颜色设置有下面两种方法。
①color{颜色名}颜色名:颜色名有12种,分别为red、green、yellow、
magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。
例如:color{magenta}magenta。
②color[rgb]{a b c}:设置字体颜色为RGB矩阵[a b c]所表示的颜色。 a、
b和c都在[0 1] 范围内。例如:color[rgb]{0 .5 .5}。
(3)Tex字符的位置有2种设置。
①_:表示下标。
②^:表示上标。
MATLAB二进制文件与文本文件
文本文件将文件看作由一个一个字节组成,每个字节最高位都是0。文本文件只
使用了一个字节中的低7位来储存所有的信息,而二进制文件将字节中的所有位
都用上了。
文件按照文本方式或二进制方式打开,都是一连串的0和1,但是打开方式不同,
对于这些0和1的处理方式也就不同。按照文本方式打开,打开时要进行转换,
将每个字都转换成ASCII码;而按照二进制方式打开时,不会进行任何转换。
文本文件和二进制文件的编辑方式也不同。例如,在用记事本进行文本编辑时,
进行编辑的最小单位是字节;而对二进制文件进行编辑时,最小单位是位,可使
用UltraEdit软件编辑二进制文件。
从文件编码方式来看,文件可分为ASCII码文件和二进制码文件。ASCII码文件
也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对
应字符的ASCII码。例如,数5678共占用4字节,“5”、“6”、“7”和“8”
的ASCII码依次为53、54、55、56,存储形式为
ASCII:00110101 00110110 00110111 00111000
十进制码:5 6 7 8
二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为
1110,只占两字节。
验证如下:
>> dec2bin(5678)
ans =
1110
>> abs('5678')
ans =
53 54 55 56
>> dec2bin(53)
ans =
00110101
>> double('5678')
ans =
53 54 55 56
>> bin2dec('00110101')
ans =
53
>> char(ans)
ans =
5
MATLAB函数句柄
函数句柄是一种特殊的数据类型,它提供了间接调用函数的方法,类似于C语言
中的指针,只不过这里是指向一个函数而已。
函数句柄包含了函数的路径、函数名、类型以及可能存在的重载方法,必须通过
专门的定义创建,而一般的图像句柄是自动建立的。
可以使用函数句柄来调用其他函数,也可以将函数句柄存储在数据结构中,方便
以后使用(如句柄图形中的回调函数)。
创建函数句柄使用@或者srt2func命令。采用@创建函数句柄,是在函数名前加
一个“@”标志,并且不能附加函数的路径,即函数句柄=@函数名。
MATLAB映射句柄到指定的函数,并在句柄中保存映射信息。由于没有附加函数
路径信息,如果同一个名字的函数有多个,函数句柄映射到哪个函数呢?
这取决于函数调用的优先原则。函数调用的优先级从高到低排列如下:
①变量。调用优先级最高。MATLAB搜索工作空间是否存在同名变量,如有则停
止搜索。
②子函数。
③私有函数。
④类构造函数。
⑤重载方法。
⑥当前目录中的同名函数。
⑦路径中其他目录中的函数。调用优先级最低。
如果查询同名函数中究竟哪个函数被调用了,用which函数查询。例如:
>> which zoom
D:Program FilesMATLABR2009atoolboxmatlabgraph2dzoom.m
当一个函数句柄被创建时,它将记录函数的详细信息。因此,当使用函数句柄调
用该函数时,MATLAB会立即执行,不进行文件搜索。当反复调用一个文件时,
可以节省大量的搜索时间,从而提高函数的执行效率。
使用函数句柄有如下好处:
①提高运行速度。因为MATLAB在调用函数时每次都要搜索所有路径,而路径又
非常多,所以一个函数在程序中需要经常用到的话,使用函数句柄会提高运行速
度。
②使用方便。比如说,用户在某目录运行函数句柄后,创建了本目录的一个函数
句柄,当用户转到其他目录下时,创建的函数句柄可以直接调用,而不需要把相
应的函数文件拷贝过来。因为在用户所创建的函数中,已经包含了路径。
有关MATLAB函数句柄以及相关的匿名函数的更多信息请查看本博客同类文章:
“MATLAB函数句柄和匿名函数”
下面代码创建一个内联函数a_humps:
>> a_humps = inline('1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6','x')
a_humps =
Inline function:
a_humps(x) = 1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6
上例中,函数inline从一个字符串创建一个函数,并以x为输入变量。要在一个函数中调用
内联函数,只要将该内联函数的名字作为输入参数传递给函数即可。例如,要将
quad(Fun,low,high)中的Fun换为上面的内联韩式a_humps,只要按下面的方式调用即可:
quad(a_humps,low,high)。
要验证一个由字符串表示的函数或一个内联函数,可以使用feval函数。下面的代码验证了
正弦函数和前面创建的a_humps函数
>> y = feval('sin',pi*(0:4)/4)
y =
0 0.7071 1.0000 0.7071 0.0000
>> z = feval(a_humps,[1- 0 1])
z=
-5.1378 5.1765 16
除了字符串函数和内联函数外,还由一种函数类型:匿名函数,并用函数句柄表示它。在应
用中并不鼓励用户使用前两种方法,而是要尽量使用匿名函数句柄来引用函数。下面代码给
出了一个匿名函数的例子:
b_humps = @ (x) 1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6;
其中,@符号意味这等号左边是一个函数句柄。@后面的(x)定义了函数的输入参数,最
后一部分是函数表达式。我们同样可以利用feval函数来验证匿名函数,例如,可以使用下
面代码验证b_humps:
>> z = feval(b_humps,[-1 0 1])
z =
-5.1378 5.1765 16.0000
其实,用户根本没有必要利用feval函数来验证匿名函数,因为匿名函数可以使用自己的函
数句柄直接进行验证,例如,上面的例子可以简写为:
>> z = b_humps([-1 0 1])
z =
-5.1378 5.1765 16.0000
匿名函数在定义过程中可以调用任何Matlab函数(包括用户自定义的函数),也可以使用当
时Matlab工作区中存在的任何变量。例如,下例中的匿名函数b_humpsab在定义时就是用
了Matlab工作区中的变量a和b:
>> a = -.3;b=-.9;
>> b_humpsab = @ (x) 1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6;
>> b_humpsab([-1 0 1])
ans =
-5.1378 5.1765 16.0000
我们看到:b_humpsab在定义时引用了前面定义的变量a和b。应当注意,当a或b的值变
化时,匿名函数并不改变,这是因为函数句柄值捕捉它创建时刻的变量的值,并不随变量的
变化而变化。
>> a = 0; %changing the value of a does not chang the function.
>> b_humpsab([-1 0 1]) %evaluate again , get the same results
ans =
-5.1378 5.1765 16.0000
我们也可以针对一个内置函数或一个M文件函数创建匿名函数句柄。下面函数分别给予M
文件函数humps和Matlab内置函数cos创建了两个文件句柄:
>> c_Mfile = @humps %function handle for M-file function
c_Mfile =
@humps
>> c_Mfile(1) %evaluate humps(1)
ans =
16
>> c_builtin = @cos
c_builtin =
@cos
>> c_builtin(pi)
ans =
-1
由上面可知,要创建一个内置函数或一个M文件函数的句柄也很容易,只要在等号右边使
用@符号,并在该符号后紧跟内置函数名或M文件函数名即可。
我们还可以利用单元数组同时创建多个内置函数和M文件函数的句柄,验证这些函数时,
只要引用该函数所在单元即可。例如,下面的代码将上面两个独立创建的句柄利用一个单元
数组c_dan创建在一起:
>> c_dan = {@humps @cos}
c_dan =
@humps @cos
>>c_dan{1}(1) %evaluate humps(1)
ans =
16
>> c_dan{2}(pi) %evaluate cos(pi)
ans =
-1
Matlab还专门提供了一些函数来处理和应用句柄。例如,函数functions将返回一个句柄的
详细信息,如下例所示:
>> functions(c_Mfile)
ans =
function: 'humps'
type: 'simple'
file: 'C:Program FilesMATLABR2009atoolboxmatlabdemoshumps.m'
>> functions(c_builtin)
ans =
function: 'cos'
type: 'simple'
file: ''
>> functions(b_humps)
ans =
function: '@(x)1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6'
type: 'anonymous'
file: ''
workspace: {[1x1 struct]}
需要注意的是:fuctions函数通常只在调试程序时使用,因为它的返回值很容易发生变化。
版权声明:本文标题:在MATLAB中使用LaTex字符 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710822520a574864.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论