如何查询/删除matlab 内存中的变量?
在matlab中,查询某个变量可直接输入变量名按ENTER进行查询,删除变量可以直接输入clear按ENTER删除,删除后会释放变量所在的内存空间。
变量是一段有名字的连续存储空间,在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。
变量是程序中数据的临时存放场所,在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。
由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。
1、创建和修改数组——基本思想是保持内存的连续性
(1)当为数组赋值时,Matlab在内存中分配连续的虚拟块,在另一个地方,将数组的类型和维数等保存为头信息。
(2)当向数组增加新元素时,如果原来位置的连续内存区域可以容纳新增加的数据,则扩大分配的内存,然后增加元素;如果连续块不够大,需要先重新分配能够容纳原有数据和新增数据的连续内存块,再将原有数据拷贝到新分配的内存中(在此期间,内存中会有原来数据的两份拷贝,增加了out of memory的风险),并添加新的元素到新的块中,然后释放原来的内存。
(3)当删除数组元素时,先移除元素,再压缩原来分配的空间。
2、数组的拷贝
(1)当将一个数组赋值给另一个变量时,不会为新变量分配内存,新变量只是到原来数组的引用,直到新变量中元素值改变时,才会为其分配内存。
(2)通过参数传递给函数的数据,当数据内容发生改变时才会分配内存,函数内部新的数据通过返回值传递给调用该函数的函数。
3、数组头
(1)由于数组头占据存储空间(虽然不多),数据存放在几个大数组中要由于存放在多个小数组中。
(2)对结构体和元胞(cell)数组,Matlab不仅为他们创建头信息,还为结构体的每个字段和元胞数组的每个元素创建头信息,因此结构题和元胞数组消耗的内存与其创建方式有关。
(3)whos函数只能查看数据占用的存储空间,不会显示头信息占用的空间。
4、数据结构与内存
(1)8-bit、16-bit、32-bit、64-bit的有符号整型或无符号整型分别占用1、2、4、8字节空间,单精度、双精度浮点数分别占用4、8字节空间。
(2)复数的实部和虚部分别占用存贮空间,当修改实部或虚部时,会同时复制实部和虚部。
(3)当数组的元素绝大部分为0时,用稀疏矩阵存贮以节省空间。
5、内存占用计算
(1)元胞数组占用的空间计算方法为:(header_size x number_of_cells) + data,对于64位系统,header_size为112,查看header_size的方法: A = {[]}, whos A。A = {1 2 3}, A = {[1 2 3]}, A = {{1 2 3}}占用的字节数分别为:112×3+8×3,112×1+8×3,112×4+8×3。
(2)64bit系统中结构体占用空间的计算方法:fields x ((112 x array elements) + 64) + data (32bit系统中将112改为60)。
MATLAB函数参考
附录1.1 管理用命令
函数名 功能描述 函数名 功能描述
addpath 增加一条搜索路径 rmpath 删除一条搜索路径
demo 运行Matlab演示程序 type 列出.M文件
doc 装入超文本文档 version 显示Matlab的版本号
help 启动联机帮助 what 列出当前目录下的有关文件
lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性
lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录
path 设置或查询Matlab路径
附录1.2管理变量与工作空间用命令
函数名 功能描述 函数名 功能描述
clear 删除内存中的变量与函数 pack 整理工作空间内存
disp 显示矩阵与文本 save 将工作空间中的变量存盘
length 查询向量的维数 size 查询矩阵的维数
load 从文件中装入数据 who,whos 列出工作空间中的变量名
附录1.3文件与操作系统处理命令
函数名 功能描述 函数名 功能描述
cd 改变当前工作目录 edit 编辑.M文件
delete 删除文件 matlabroot 获得Matlab的安装根目录
diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录
dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件
! 执行操作系统命令
附录1.4窗口控制命令
函数名 功能描述 函数名 功能描述
echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面
format 设置输出格式
附录1.5启动与退出命令
函数名 功能描述 函数名 功能描述
matlabrc 启动主程序 quit 退出Matlab环境
startup Matlab自启动程序
附录2 运算符号与特殊字符附录
2.1运算符号与特殊字符
函数名 功能描述 函数名 功能描述
+ 加 ... 续行标志
- 减 , 分行符(该行结果不显示)
* 矩阵乘 ; 分行符(该行结果显示)
.* 向量乘 % 注释标志
^ 矩阵乘方 ! 操作系统命令提示符
.^ 向量乘方 矩阵转置
kron 矩阵kron积 . 向量转置
\ 矩阵左除 = 赋值运算
/ 矩阵右除 == 关系运算之相等
.\ 向量左除 ~= 关系运算之不等
./ 向量右除 < 关系运算之小于
: 向量生成或子阵提取 <= 关系运算之小于等于
() 下标运算或参数定义 > 关系运算之大于
[] 矩阵生成 >= 关系运算之大于等于
{} & 逻辑运算之与
. 结构字段获取符 | 逻辑运算之或
. 点乘运算,常与其他运算符联合使用(如.\) ~ 逻辑运算之非
xor 逻辑运算之异成
附录2.2逻辑函数
函数名 功能描述 函数名 功能描述
all 测试向量中所用元素是否为真 is*(一类函数) 检测向量状态.其中*表示一个确定的函数(isinf)
any 测试向量中是否有真元素 *isa 检测对象是否为某一个类的对象
exist 检验变量或文件是否定义 logical 将数字量转化为逻辑量
find 查找非零元素的下标
附录3 语言结构与调试
附录3.1编程语言
函数名 功能描述 函数名 功能描述
builtin 执行Matlab内建的函数 global 定义全局变量
eval 执行Matlab语句构成的字符串 nargchk 函数输入输出参数个数检验
feval 执行字符串指定的文件 script Matlab语句及文件信息
function Matlab函数定义关键词
附录3.2控制流程
函数名 功能描述 函数名 功能描述
break 中断循环执行的语句 if 条件转移语句
case 与switch结合实现多路转移 otherwise 多路转移中的缺省执行部分
else 与if一起使用的转移语句 return 返回调用函数
elseif 与if一起使用的转移语句 switch 与case结合实现多路转移
end 结束控制语句块 warning 显示警告信息
error 显示错误信息 while 循环语句
for 循环语句
附录3.3交互输入
函数名 功能描述 函数名 功能描述
input 请求输入 menu 菜单生成
keyboard 启动键盘管理 pause 暂停执行
附录3.4面向对象编程
函数名 功能描述 函数名 功能描述
class 生成对象 isa 判断对象是否属于某一类
double 转换成双精度型 superiorto 建立类的层次关系
inferiorto 建立类的层次关系 unit8 转换成8字节的无符号整数
inline 建立一个内嵌对象
附录3.5调试
函数名 功能描述 函数名 功能描述
dbclear 清除调试断点 dbstatus 列出所有断点情况
dbcont 调试继续执行 dbstep 单步执行
dbdown 改变局部工作空间内存 dbstop 设置调试断点
dbmex 启动对Mex文件的调试 sbtype 列出带命令行标号的.M文件
dbquit 退出调试模式 dbup 改变局部工作空间内容
dbstack 列出函数调用关系
本文来自CSDN博客,转载请标明出处:
在matlab中,查询某个变量可直接输入变量名按ENTER进行查询。(如下图中变量a)
删除变量可以直接输入clear按ENTER删除,删除后会释放变量所在的内存空间。(如下图运行clear命令后变量a未被定义。)
打开matlab后,直接在workspace窗口,可以查看和删除已定义的变量!
标签:matlab,内存,查询