问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MATLAB的数据类型和各类数据类型转化示例

创作时间:
作者:
@小白创作中心

MATLAB的数据类型和各类数据类型转化示例

引用
CSDN
1.
https://blog.csdn.net/xrgs_shz/article/details/145398556

在MATLAB中,数据类型是非常重要的概念,因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。掌握这些数据类型及其转换方法,是学习MATLAB编程的基础。

一、MATLAB的数据类型

在MATLAB中 ,数据类型是非常重要的概念,因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。MATLAB 是一种动态类型语言,这意味着变量的数据类型是在赋值时自动确定的。用户可以直接赋值,MATLAB 会根据所赋的值自动推断变量的类型。MATLAB可以使用 whos 查看变量信息(包括变量的名称、大小、字节数、数据类型等)。

1. 数值型(Numeric Types)

int8, int16, int32, int64: 有符号整数
uint8, uint16, uint32, uint64: 无符号整数
single, double: 浮点数(单精度和双精度)

% 数值型赋值  
a = 10; % MATLAB 自动将 a 识别为 double 类型  
b = 3.14159; % 同样,b 被识别为 double 类型  
c = int8(5); % 可以手动指定类型为 int8  
d=single(3.14159)% 可以手动指定类型为 single  
whos  

2. 字符型(Character Arrays)

用单引号括起来的字符序列,例如 'Alice'

name = 'Alice'; % 字符数组  

3. 字符串型(String Arrays)

用双引号括起来的字符串,例如 "Hello, world!"

greeting = "Hello, world!"; % 字符串数组  

由上面可知,对简单文本而言,字符串型数据比字符型数据要占用的存储空间大很多。

字符数组每个字符占2字节,没有额外开销,适合存储单一文本或固定长度的多行文本。 字符串数组每个元素是一个字符串,可能有较大的固定开销,适合存储不同长度的文本,尤其是当各文本长度差异较大时,避免填充空格。

因此,使用时应根据需要选择:若文本长度相同或相近,优先使用字符数组以节省空间;若长度差异大或需要灵活操作,使用字符串数组。

4. 逻辑型(Logical)

true 或 false

% 逻辑型赋值  
isPassed = true; % 逻辑型变量  

5. 结构体(Struct)

用于存储不同类型和大小的数据集合

% 结构体赋值  
person.name = "John";  
person.age=25;  
person.height = 180.5;  

6. 单元数组(Cell Array)

可以包含不同类型的数据

% 单元数组赋值  
cellArray = {'apple', 42, false,3.14,true,"Hello, world!"}; % 可以包含不同类型的数据  

7. 数组和矩阵(Arrays and Matrices)

数值型、字符型或其他类型的数据组合

% 数组和矩阵赋值  
numbers = [1, 2, 3, 4, 5, 6]; % 行向量  
matrix = [1, 2, 3; 4, 5, 6]; % 2x3 矩阵  

下面给出一个应用whos查看已创建不同类型的数据变量的实例

% 清除工作区中的所有变量  
clear;  
% 创建不同类型的变量  
numericVar = 42; % 数值型  
stringVar = 'Hello, MATLAB!'; % 字符型  
logicalVar = true; % 逻辑型  
structVar = struct('name', 'John', 'age', 30); % 结构体  
cellVar = {'MATLAB', 3.14, true}; % 单元数组  
complexVar = 3 + 4i; % 复数型  
% 使用 whos 查看变量信息  
disp('Variable information using whos:');  
whos;  
% 若想只查看特定变量的信息,可以传递变量名给 whos  
disp('Information for specific variable (numericVar):');  
whos numericVar;  
% 若想查看变量的详细信息,可以使用 whos 的输出形式  
varInfo = whos;  
% 显示变量的数据类型  
disp('Variable names and their types:');  
for i = 1:length(varInfo)  
fprintf('%s: %s\n', varInfo(i).name, varInfo(i).class);  
end  

二、MATLAB不同数据类型转换实例

% MATLAB 数据类型转换示例  
% 数值类型赋值  
a = 10; % double 类型  
b = int8(5); % int8 类型  
c = 3.14; % double 类型  
d = single(2.718); % single 类型  
% 复数赋值  
z = 1 + 2i;  
% 字符和字符串赋值  
charArray = 'hello';  
stringArray = "world";  
% 逻辑类型赋值  
isTrue = true;  
isFalse = false;  
% 结构体赋值  
person.name = "Alice";  
person.age = 30;  
person.isStudent = false;  
% 单元数组赋值  
cellArray = {charArray, stringArray, isTrue, person};  
% 数组和矩阵赋值  
matrix = [1, 2, 3; 4, 5, 6];  
% 数值类型转换  
a_int8 = int8(a); % 将 double 转换为 int8  
b_double = double(b); % 将 int8 转换为 double  
c_single = single(c); % 将 double 转换为 single  
d_double = double(d); % 将 single 转换为 double  
% 复数到实数的转换  
z_real = real(z); % 提取实部  
z_imag = imag(z); % 提取虚部  
% 字符和字符串转换  
charFromString = char(stringArray); % 将字符串转换为字符数组  
stringFromChar = string(charArray); % 将字符数组转换为字符串  
% 逻辑类型到数值的转换  
isTrue_numeric = double(isTrue); % 将逻辑值转换为数值(1 或 0)  
isFalse_numeric = double(isFalse);  
% 结构体到单元数组的转换  
personCell = struct2cell(person); % 将结构体转换为单元数组  
% 单元数组到结构体的转换(假设单元数组格式正确)  
newPerson = cell2struct(personCell, fieldnames(person));  
% 数组和矩阵转换  
matrix_single = single(matrix); % 将 double 矩阵转换为 single 矩阵  
matrix_int8 = int8(matrix); % 将 double 矩阵转换为 int8 矩阵(可能会丢失精度)  
% 显示转换结果  
disp('Converted Values:');  
disp(['a_int8: ', num2str(a_int8)]);  
disp(['b_double: ', num2str(b_double)]);  
disp(['c_single: ', num2str(c_single)]);  
disp(['d_double: ', num2str(d_double)]);  
disp(['z_real: ', num2str(z_real)]);  
disp(['z_imag: ', num2str(z_imag)]);  
disp(['charFromString: ', charFromString]);  
disp(['stringFromChar: ', stringFromChar]);  
disp(['isTrue_numeric: ', num2str(isTrue_numeric)]);  
disp(['isFalse_numeric: ', num2str(isFalse_numeric)]);  
disp('personCell:');  
disp(personCell);  
disp('newPerson:');  
disp(newPerson);  
disp('matrix_single:');  
disp(matrix_single);  
disp('matrix_int8:');  
disp(matrix_int8);  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号