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

news/2025/1/31 9:32:47 标签: matlab, java, 前端

一、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.niftyadmin.cn/n/5838556.html

相关文章

剑指 Offer II 009. 乘积小于 K 的子数组

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20009.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84/README.md 剑指 Offer II 009. 乘积小于 K 的子数组 题目描述 给…

Git进阶之旅:.gitignore 文件

介绍: 在项目中,我们可能一起提交多个文件 git add -A:提交所有变化git add -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包括新文件(new) git add .:提交新文件(new) 和被修改文件(modif…

【2】阿里面试题整理

[1]. 说一下Java与C的区别。 Java和C是两种在软件开发领域应用非常广泛的语言,但它们的设计理念和应用场景有所不同。 Java是一种基于JVM的解释型语言,具有跨平台性,使用自动垃圾回收机制,这使得开发者可以更专注于业务逻辑&…

【计算机网络】设备更换地区后无法访问云服务器问题

文章目录 1. **服务器的公网 IP 是否变了**2. **服务器的防火墙或安全组设置**3. **本地运营商或 NAT 限制**4. **ISP 限制或端口封锁**5. **服务器监听地址检查** 1. 服务器的公网 IP 是否变了 在服务器上运行以下命令,检查当前的公网 IP:curl ifconfi…

自动化运维的未来:从脚本到AIOps的演进

点击进入IT管理资料库 一、自动化运维的起源:脚本时代 (一)脚本在运维中的应用场景 在自动化运维的发展历程中,脚本扮演着至关重要的角色,它作为最初的操作入口,广泛应用于诸多日常运维工作场景里。 在系统…

INCOSE需求编写指南-附录 C: 需求模式

附录 Appendix C: 需求模式 Requirement Patterns C.1 需求模式简介 Introduction to Requirement Patterns 需求模式(样板或模板)的概念最初于 1998 年在英国的未来水面战斗人员 (FSC) 国防项目中应用(Dick 和 Llorens,2012 年…

零碎的知识点(十二):卷积神经网络CNN通道数的理解!

卷积神经网络CNN通道数的理解! 通道数的核心概念解析1. 通道数的本质 2. 单张灰度图的处理示例: 3. 批量输入的处理通道与批次的关系: 4. RGB三通道输入的处理计算过程:示例: 5. 通道数的实际意义6. 可视化理解(1) 单通…

【视频+图文详解】HTML基础4-html标签的基本使用

图文教程 html标签的基本使用 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff1a;<ul>以及<li>&#xff08;两个标签都属于容器级标签&#xff0c;其中ul只能嵌套li标签&#xff0c;但li标签能嵌套任何标签&#xff0c;甚至ul标…