比如
type edge
也可以试一试
edit edge
便可以修改了(如果你对这个文件不了解,请不要修改)
typecast用于在不改变基础数据的情况下转换数据类型 Y = typecast(X, type) 输入X必须是一个完整的,不复杂的数字标量或矢量。 type输入的字符串设置为以下 'uint8', 'int8','uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single'.typecast是类型转换函数,出现于Matlab较新的版本,也许你会说Matlab里有很多用于类型转换的函数,如double(),uint8()等。但typecast绝对不是同一个概念。
例如当我们将double类型的数字2转换为uint8时(uint8(2)),得到的结果仍然是2。
但是,使用typecast,当输入typecast(uint16(511),'uint8'),得到的结果是什么呢?我们得到了一个长度为2的uint8向量,在little-endian架构的环境中,这个向量的元素取值分别为[255,1],uint16类型数据256存储于内存中占两个字节,二进制表示为00000001 11111111,由于little-endian的排列方式,在内存中从低地址到高地址分别为11111111 00000001,即255 1。
也就是说不同于平常使用的类型转换,typecast不改变内存中的二进制数据。
下面研究一下typecast的源码:
function out = typecast(in, datatype)
%TYPECAST Convert datatypes without changing underlying data.
% Y = TYPECAST(X, DATATYPE) convert X to DATATYPE. If DATATYPE has
% fewer bits than the class of X, Y will have more elements than X. If
% DATATYPE has more bits than the class of X, Y will have fewer
% elements than X. X must be a scalar or vector. DATATYPE must be one
% of 'UINT8', 'INT8', 'UINT16', 'INT16', 'UINT32', 'INT32', 'UINT64',
% 'INT64', 'SINGLE', or 'DOUBLE'.
%
% Note: An error is issued if X contains fewer values than are needed
% to make an output value.
%
% Example:
%
% X = uint32([1 255 256])
% Y = typecast(X, 'uint8')
%
% On little-endian architectures Y will be
%
% [1 0 0 0 255 0 0 0 0 1 0 0]
%
% See also CLASS, CAST, SWAPBYTES.
% Copyright 1984-2005 The MathWorks, Inc.
% $Revision: 1.1.6.3 $ $Date: 2005/10/25 18:29:45 $
error(nargchk(2, 2, nargin, 'struct'))
if (isa(datatype, 'char'))
%若datatype为char数组,则转换为小写,调用typecastc函数
out = typecastc(in, lower(datatype))
else
out = typecastc(in, datatype)
end
这个函数内容很简单,不用怎么说明。之所以简单,是因为主要功能都放在了一个名为typecastc的函数中了。typecastc用c语言编写
matlab里面有没有像python中的type()函数?答案是有的。type 命令使用格式为
>>type 函数名(或m文件名)
如:type meshgrid 显示meshgrid.m文件内容
如要matlab中显示变量的数据类型,可以用whos命令
>>whos
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)