7.3变量状态

当创建简单的一次性程序时,可以非常方便地在提示下查看哪些变量可用。函数及其兄弟姐妹whos_line_format将显示有关内存中内容的不同信息,如下所示。

str=“随机字符串”;who-|当前作用域中的变量:-|-|ans-str
 
:
: 图案
: 参数模式…
:C (…)

列出当前定义的与给定模式匹配的变量。

有效的模式语法与针对的描述相同清楚的命令如果未提供任何模式,则会列出所有变量。

默认情况下,只显示在本地作用域中可见的变量。

以下是有效的参数,但不能组合使用。

全球的

列出全局范围而不是当前范围中的变量。

-正则表达式

当匹配要显示的变量时,这些模式被认为是正则表达式。接受的相同模式语法正则表达式函数。

文件

下一个参数被视为文件名。将列出在指定文件中找到的所有变量。从文件中读取变量时不接受任何模式。

如果作为函数调用,则返回与给定模式匹配的已定义变量名称的元胞数组。

详见: ,isglobal,isvarname,存在,正则表达式.

 
:
: 图案
: 参数模式…
: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是其中之一

1

name是一个变量。

2

name是一个绝对的文件名,在Octave的路径,或(在附加'之后.m')Octave的函数文件路径.

3

name是'十月.mex'文件在Octave的路径.

5

name是一个内置函数。

7

name是一个目录。

8

name是一个classdef类。

103

name是一个与文件无关的函数(在命令行中输入)。

0

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.执行命令清除fooonce将清除变量定义并恢复的定义foo作为一种函数。正在执行清除foo第二次将清除函数定义。

当链接到全局变量的局部变量名被清除时,只有该变量的局部副本被删除。全局副本不可访问,可以使用恢复全球的全局名称(_V)相反地清除-g全局名称(_V)将删除局部变量和全局变量。

详见: clearvars,,,存在,mlock.

 
:clearvars
:clearvars 图案
:clearvars -正则表达式图案
:clearvars 除了图案
:clearvars …-除了-regexp图案
:clearvars 全球的

删除与给定匹配的变量图案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栏$

详见: 清楚的,,,存在.

 
:收拾 ()

在中整合工作区内存MATLAB.

提供此函数是为了兼容性,但在Octave中不起任何作用。

详见: 清楚的.

关于函数或变量的信息,如其在文件系统中的位置,也可以从Octave中获取。这通常只在程序开发过程中有用,而不是在程序中有用。

 
:类型 name
:类型 qname
:文本 类型 ("name", …)

显示的内容name它可以是文件、函数(m-file)、变量、运算符或关键字。

类型通常在描述的类别的标题行之前name例如函数或变量;这个q参数抑制此行为。

如果未使用输出变量,则内容将显示在屏幕上。否则,将返回一个字符串元胞数组,其中每个元素对应于每个指定函数的内容。

 
:哪一个 name
:[str, …] = 哪一个 ('name', …)

显示每个的类型name.

如果name是从函数文件中定义的,也会显示文件的全名。

详见: 帮助,查找.

 
:什么
:什么 目录
:w 什么 (目录)

列出目录中特定于Octave的文件目录.

如果目录则使用当前目录。

如果指定返回参数,则在结构体中返回找到的文件w。该结构体包含以下字段:

路径

目录的完整路径目录

m

m文件的元胞数组

小地毯

垫锉的元胞数组

mex

mex文件的元胞数组

十月

oct文件的元胞数组

mdl

mdl文件的元胞数组

slx

slx文件的元胞数组

</p>

p文件的元胞数组

类目录的元胞数组(@类的名称/)

软件包

包目录的元胞数组(+pkgname/)

兼容性说明:Octave不支持mdl、slx和p文件。什么将始终为这些类别返回一个空列表。

详见: 哪一个,ls,存在.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号