当创建简单的一次性程序时,可以非常方便地在提示下查看哪些变量可用。函数谁
及其兄弟姐妹谁
和whos_line_format
将显示有关内存中内容的不同信息,如下所示。
str=“随机字符串”;who-|当前作用域中的变量:-|-|ans-str
图案
¶
参数模式…
¶
C
谁 (…)
¶
列出当前定义的与给定模式匹配的变量。
有效的模式语法与针对的描述相同清楚的
命令如果未提供任何模式,则会列出所有变量。
默认情况下,只显示在本地作用域中可见的变量。
以下是有效的参数,但不能组合使用。
全球的
列出全局范围而不是当前范围中的变量。
-正则表达式
当匹配要显示的变量时,这些模式被认为是正则表达式。接受的相同模式语法正则表达式
函数。
文件
下一个参数被视为文件名。将列出在指定文件中找到的所有变量。从文件中读取变量时不接受任何模式。
如果作为函数调用,则返回与给定模式匹配的已定义变量名称的元胞数组。
图案
¶
参数模式…
¶
S
谁 图案
¶
提供与给定模式匹配的当前定义变量的详细信息。
参数和模式语法与的相同谁
命令
每个变量的扩展信息汇总在一个表中,表中有以下默认条目。
列出的变量的属性。可能的属性包括:
本地范围中的变量
c
复杂类型的变量。
f
形式参数(函数参数)。
g
具有全局范围的变量。
</p>
持久变量。
变量的名称。
变量的逻辑大小。标量为1x1,向量为1xN或Nx1,2-D矩阵为MxN。
当前用于存储变量的内存量。
变量的类。示例包括double、single、char、uint16、cell和struct。
该表格可以自定义,以通过该函数显示或多或少的信息whos_line_format
.
如果谁
作为函数调用,返回与给定模式匹配的定义变量名的结构体数组。结构体中描述每个变量的字段有:名称、大小、字节、类、全局、稀疏、复杂、嵌套、持久。
详见: 谁,whos_line_format.
val=
whos_line_format ()
¶
旧值(_V)=
whos_line_format (new_val)
¶
旧值(_V)=
whos_line_format (new_val地方的
¶
查询或设置命令使用的格式字符串谁
.
完整格式字符串为:
%[modifier]<command>[:width[:left min[:balance]]];
以下命令序列可用:
a
打印变量的属性(c=复杂,s=稀疏,f=形式参数,g=全局,p=持久)。
b
打印变量占用的字节数。
c
打印变量的类名。
e
打印变量所包含的元素。
n
打印变量名。
s
打印变量的维度。
%t
打印变量的类型名称。
每个命令也可能有一个对齐修饰符:
l
左对齐。
r
右对齐(默认)。
c
列对齐(仅适用于命令%s)。
这个宽度
参数是一个正整数,指定用于打印的最小列数。不需要最大值,因为字段将根据需要自动展开。
参数左最小值
和balance
仅当列对齐修饰符与命令“”一起使用时才可用s’.balance
指定将在条目之间对齐的字段宽度内的列编号。编号从0开始,表示最左边的列。左最小值
指定指定平衡列左侧的最小字段宽度。
默认格式为:
“%la:5;%ln:6;%cs:16:6:1;%rb:12;%lc:-1;\n”
当从具有的函数内部调用时地方的
参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。
详见: 谁.
可以确定给定的变量是否可用,而不是显示哪些变量在内存中。这样,就有可能根据变量的存在来改变程序的行为。以下示例说明了这一点。
if(!exist(“meaning”,“var”))disp(“程序没有‘meaning’”);endif
c=
存在 (name)
¶
c=
存在 (name,type)
¶
检查是否存在name作为变量、函数、文件、目录或类。
返回代码c是其中之一
name是一个变量。
name是一个绝对的文件名,在Octave的路径
,或(在附加'之后.m')Octave的函数文件路径
.
name是'十月或.mex'文件在Octave的路径
.
name是一个内置函数。
name是一个目录。
name是一个classdef类。
name是一个与文件无关的函数(在命令行中输入)。
name不存在。
如果可选参数type如果提供了,请仅检查指定类型的符号。有效类型为
“var”
仅检查变量。
“内置”
仅检查内置函数。
“目录”
仅检查目录。
文件
仅检查文件和目录。
类
仅检查classdef类。
如果没有给定类型并且存在多个可能的名称匹配,存在
将根据以下优先级列表返回一个代码:变量、内置函数、oct文件、目录、文件、类。
存在
如果一个名为name存在于Octave的搜索路径中。有关不在搜索路径上的其他类型文件的信息,请使用以下函数的组合文件_路径
和斯达
相反
编程注意事项:如果name从一个有缺陷的.oct/.mex文件实现,调用存在可能导致Octave崩溃。为了保持高性能,Octave信任.oct/.mex文件,而不是对它们进行沙盒处理。
详见: 文件_in_loadpath,文件_路径,目录_路径,斯达.
通常Octave会管理内存,但有时手动从内存中删除变量是可行的。当处理填充了大量内存的大变量时,通常需要这样做。在使用IEEE浮点格式的计算机上,以下程序赋值一个需要大约128 MB内存的矩阵。
large_matrix=零(40004000);
从于内存中有此变量可能会减慢其他计算速度,因此可能需要手动将其从内存中删除。这个清楚的
或clearvars
函数执行此操作。
图案…
¶
param 图案…
¶
删除与给定名称匹配的名称图案s,从而释放内存。
这个图案可能包含以下特殊字符:
?
匹配任意单个字符。
*
匹配零个或多个字符。
[列表]
匹配指定的字符列表列表.如果第一个特征!
或^
,匹配除指定字符以外的所有字符列表。例如,图案[a-zA-Z]
将匹配所有小写和大写字母字符。在Windows上,方括号是按字面意思匹配的,不用于对字符进行分组。
例如,命令
清除foo b*r
清除名称foo
以及所有以字母'开头的名字b'并以字母结尾'r’.
如果清楚的
在没有任何参数的情况下调用,则从当前工作区中清除所有用户定义的变量(即局部变量)。存在的任何全局变量在当前工作区中将不再可见,但它们将继续存在于全局工作区中。函数不受此形式的影响清楚的
.
以下参数有长短两种形式
全部,全部,-a
从符号表中清除所有本地和全局用户定义的变量以及所有函数。
-独占,-x
清除这样做的变量不匹配以下模式。
函数,-functions,-f
从函数符号表中清除函数名称。永久变量将被重新初始化为其默认值,除非函数已被锁定在内存中mlock
.
全局,-全局,-g
清除全局变量名。
变量,-v
清除局部变量名。
类,-classes,-c
清除类结构体表和所有对象。
-正则表达式,-r
这个图案参数被视为正则表达式,任何匹配都将被清除。
除了独家和-正则表达式,所有长参数也可以在不带破折号的情况下使用。注意,除了独家,可能只显示一个其他参数。所有参数必须出现在任何模式之前。
编程说明:命令清楚的name
仅清除变量name当一个变量和一个名为name当前已定义。例如,假设您定义了一个函数foo
,然后通过执行赋值将其隐藏foo=2
.执行命令清除foo
once将清除变量定义并恢复的定义foo
作为一种函数。正在执行清除foo
第二次将清除函数定义。
当链接到全局变量的局部变量名被清除时,只有该变量的局部副本被删除。全局副本不可访问,可以使用恢复全球的全局名称(_V)
相反地清除-g全局名称(_V)
将删除局部变量和全局变量。
图案…
¶
-正则表达式图案…
¶
除了图案…
¶
…-除了-regexp图案…
¶
全球的
¶
删除与给定匹配的变量图案s来自内存。
这个图案可能包含以下特殊字符:
?
匹配任意单个字符。
*
匹配零个或多个字符。
[列表]
匹配指定的字符列表列表。如果第一个字符是!
或^
,匹配除指定字符外的所有字符列表。例如,图案[a-zA-Z]
将匹配所有小写和大写字母字符。
如果-正则表达式参数,然后将后续模式作为正则表达式处理,并清除任何匹配项。
如果除了参数,然后后续模式选择将不被清除。
如果全球的参数,则所有模式都将应用于全局变量,而不是局部变量。
当在没有自变量的情况下调用时,clearvars
删除所有局部变量。
示例代码:
清除以开头的所有变量'x'
以及特定变量“foobar”
clearvars x*foobar
清除特定变量“foobar”
并使用正则表达式清除以开头的所有变量'x'
或y
.
clearvars foobar-正则表达式^x^y
清除除之外的所有变量“foobar”
clearvars-foobar除外
清除以开头的所有变量“foo”
,除了那些endinginbar
clearvars foo*-except-regexp栏$
关于函数或变量的信息,如其在文件系统中的位置,也可以从Octave中获取。这通常只在程序开发过程中有用,而不是在程序中有用。
name…
¶
qname…
¶
文本
类型 ("name", …)
¶
显示的内容name它可以是文件、函数(m-file)、变量、运算符或关键字。
类型
通常在描述的类别的标题行之前name例如函数或变量;这个q参数抑制此行为。
如果未使用输出变量,则内容将显示在屏幕上。否则,将返回一个字符串元胞数组,其中每个元素对应于每个指定函数的内容。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号