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

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

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

      字符数组每个字符占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);

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

相关文章:

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

一、MATLAB的数据类型 在MATLAB中 ,数据类型是非常重要的概念,因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。MATLAB 是一种动态类型语言,这意味着变量的数…...

UE求职Demo开发日志#19 给物品找图标,实现装备增加属性,背包栏UI显示装备

1 将用到的图标找好,放一起 DataTable里对应好图标 测试一下能正确获取: 2 装备增强属性思路 给FMyItemInfo添加一个枚举变量记录类型(物品,道具,装备,饰品,武器)--> 扩展DataT…...

C++泛型编程指南09 类模板实现和使用友元

文章目录 第2章 类模板 Stack 的实现2.1 类模板 Stack 的实现 (Implementation of Class Template Stack)2.1.1 声明类模板 (Declaration of Class Templates)2.1.2 成员函数实现 (Implementation of Member Functions) 2.2 使用类模板 Stack脚注改进后的叙述总结脚注2.3 类模板…...

使用MATLAB进行雷达数据采集可视化

本文使用轮趣科技N10雷达,需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据,并进行 实时 3D 点云可视化。数据通过 串口 传输,并经过解析后转换为 三维坐标点,最终使用 pcplayer 进…...

【Elasticsearch】allow_no_indices

- **allow_no_indices 参数的作用**: 该参数用于控制当请求的目标索引(通过通配符、别名或 _all 指定)不存在或已关闭时,Elasticsearch 的行为。 - **默认行为**: 如果未显式设置该参数,默认值为 …...

54【ip+端口+根目录通信】

上节课讲到,根目录起到定位作用,比如我们搭建一个php网站后,注册系统是由根目录的register.php文件执行,那么我们给这个根目录绑定域名https://127.0.0.1,当我们浏览器访问https://127.0.0.1/register.php时&#xff0…...

python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法

回溯算法 「所有可能的结果」,而不是「结果的个数」,一般情况下,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」。 回溯算法关键在于:不合适就退回上一步。在回溯算法中,递归用于深入到所有可能的分支&…...

DeepSeek横空出世,AI格局或将改写?

引言 这几天,国产AI大模型DeepSeek R1,一飞冲天,在全球AI圈持续引爆热度,DeepSeek R1 已经是世界上最先进的 AI 模型之一,可与 OpenAI 的新 o1 和 Meta 的 Llama AI 模型相媲美。 DeepSeek-V3模型发布后,在…...

聚簇索引、哈希索引、覆盖索引、索引分类、最左前缀原则、判断索引使用情况、索引失效条件、优化查询性能

聚簇索引 聚簇索引像一本按目录排版的书,用空间换时间,适合读多写少的场景。设计数据库时,主键的选择(如自增ID vs 随机UUID)会直接影响聚簇索引的性能。 什么是聚簇索引? 数据即索引:聚簇索引…...

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖: 打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK: pip i…...

python的pre-commit库的使用

在软件开发过程中,保持代码的一致性和高质量是非常重要的。pre-commit 是一个强大的工具,它可以帮助我们在提交代码到版本控制系统(如 Git)之前自动运行一系列的代码检查和格式化操作。通过这种方式,我们可以确保每次提…...

架构技能(四):需求分析

需求分析,即分析需求,分析软件用户需要解决的问题。 需求分析的下一环节是软件的整体架构设计,需求是输入,架构是输出,需求决定了架构。 决定架构的是软件的所有需求吗?肯定不是,真正决定架构…...

Linux环境下的Java项目部署技巧:安装 Nginx

Nginx 的简介: Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP / POP3 / SMTP 代理服务器。它可以作为网站静态资源的 web 服务器,也可以作为其他应用服务器的反向代理服务器。同时, Nginx 还具有负载均衡的功能。 N…...

前端 Vue 性能提升策略

一、引言 前端性能优化是确保 Web 应用快速响应和流畅用户体验的关键。对于使用 Vue.js 构建的应用,性能优化不仅涉及通用的前端技术,还包括针对 Vue 特性的特定优化措施。本文将从多个方面探讨如何全面提升前端和 Vue 应用的性能。 二、前端性能优化基础 1. 减少初始加载…...

深入理解linux中的文件(上)

1.前置知识: (1)文章 内容 属性 (2)访问文件之前,都必须打开它(打开文件,等价于把文件加载到内存中) 如果不打开文件,文件就在磁盘中 (3&am…...

Unity特效插件GodFX

2022Unity安装使用方法​​,将MinDrawer.cs文件MinAttribute改成UnityEngine.PostProcessing.MinAttribute 参考链接: Unity3D特效插件GodFX使用教程_哔哩哔哩_bilibili...

从 C 到 C++:理解结构体中字符串的存储与操作

对于刚入门 C/C 的程序员来说,字符串的存储和操作可能是个容易混淆的知识点。在 C 中,std::string 提供了非常友好的接口,我们可以轻松地在结构体中使用字符串类型,无需关注底层细节。然而,在 C 语言中,字符…...

Linux进阶——时间服务器

NTP是网络时间协议(network time protocol)的简称(应用层的协议),通过UDP123端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议NTP的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08…...

力扣 295. 数据流的中位数

🔗 https://leetcode.cn/problems/find-median-from-data-stream/ 题目 数据流中不断有数添加进来,add 表示添加数据,find 返回数据流中的中位数 思路 大根堆存储数据流中偏小的数据小根堆存储数据流中偏大的数据若当前的 num 比大根堆的…...

【Linux】进程状态和优先级

个人主页~ 进程状态和优先级 一、进程状态1、操作系统进程状态(一)运行态(二)阻塞态(三)挂起态 2、Linux进程状态(一)R-运行状态并发执行 (二)S-浅度睡眠状态…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...