当前位置: 首页 > article >正文

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

一、MATLAB的数据类型

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

1. 数值型(Numeric Types)

int8int16int32int64: 有符号整数

uint8uint16uint32uint64: 无符号整数

singledouble: 浮点数(单精度和双精度)

% 数值型赋值

% 数值型赋值

 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!"; % 字符串数组

4. 逻辑型(Logical)

true 或 false

% 逻辑型赋值

isPassed = true; % 逻辑型变量

5. 结构体(Struct)

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

% 结构体赋值

person.name = "Bob";

 person.age = 25;

person.height = 180.5;

6.  单元数组(Cell Array)

可以包含不同类型的数据

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

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

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

% 数组和矩阵赋值

numbers = [1, 2, 3, 4, 5, 6]; % 行向量

matrix = [1, 2; 3, 4]; % 2x2 矩阵

下面给出一个应用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);

    如果大家觉得本文对大家学习和研究有所帮助,请点赞、关注,欢迎转发!谢谢大家!


http://www.kler.cn/a/526381.html

相关文章:

  • 基于新一代电子电器架构的SOA服务设计方法
  • DeepSeek R1与OpenAI o1深度对比
  • 智能家居监控系统数据收集积压优化
  • games101-作业3
  • 【漫话机器学习系列】069.哈达马乘积(Hadamard Product)
  • llama.cpp LLM_CHAT_TEMPLATE_DEEPSEEK_3
  • NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram
  • 能源行业区块链相关的书籍
  • 【Linux】线程互斥与同步
  • Python标准库 - os (2) 进程管理
  • 力扣116. 填充每个节点的下一个右侧节点指针
  • C#Halcon扇形/圆环缺陷检测(极坐标变换法)
  • 剑指 Offer II 010. 和为 k 的子数组
  • 设计模式Python版 建造者模式
  • 登录管理——认证方案(JWT、拦截器、ThreadLocal、短信验证)
  • 数据采集丨豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)
  • 遗传算法【Genetic Algorithm(GA)】求解函数最大值(MATLAB and Python实现)
  • 零碎的知识点(十二):卷积神经网络CNN通道数的理解!
  • 光伏设计新利器:绿虫仿真设计软件的优势
  • 【教学类-89-04】20250130新年篇04——九叠篆印章(九叠篆站+Python下载图片+Python组合文字)幼儿名字印章