Matlab 实用小函数汇总

news2024/9/29 13:16:49

文章目录

  • Part.I 元胞相关
    • Chap.I 创建空 char 型元胞
  • Part.II 矩阵相关
    • Chap.I 矩阵插入元素
  • Part.III 字符串相关
    • Chap.I 获取一个文件夹下所有文件的文件名的部分内容
  • Part.IV 结构体相关
    • Chap.I 读取结构体
    • Chap.II 取结构体中某一字段的所有值


本篇博文记录一些笔者使用 Matlab 时,根据自己的需求编写的一些小函数。

Part.I 元胞相关

Chap.I 创建空 char 型元胞

matlab可以创建空元胞矩阵cell(a,b);只不过创建好之后里面存储的类型是空double,笔者想要创建一个空元胞矩阵且里面存放的数据类型是char,所以笔者编写了这样一个函数:

% get a null cell which is a*b dims
function data=kcell(a,b)
data=cell(a,b);
for i=1:a
   for j=1:b
       data(i,j)=cellstr(num2str(data{i,j}));
   end
end
end

Part.II 矩阵相关

Chap.I 矩阵插入元素

Matlab 在一个行向量/列向量某个位置处插入一个值

% insert num at ind in mat
function data=insert(mat,ind,num)
n=length(mat);
data(ind)=num;
data(1:ind-1)=mat(1:ind-1);
data(ind+1:n+1)=mat(ind:n);
end

Part.III 字符串相关

Chap.I 获取一个文件夹下所有文件的文件名的部分内容

最近搞事情想从一个目录中提取所有文件的文件名中前几个字符并转换为char。原来发现我一直存在一个误区“""''引起来的东西是相同的”。今天才发现是不同的,然后又学到了一写新的东西:比如元素取唯一,获取目录中所有文件的名字……

% get sitename from a dir
function site=getSite_dir(enudir)
dirOutput = dir(fullfile(enudir));% 此行+下面一行=获取目录所有文件名
plyName = {dirOutput.name};       % get a cell mat
plyName = plyName(3:end);         % rm . and ..
n=length(plyName);
sitelist="";
for i=1:n
   fname=plyName{i};
   sitelist=strcat(sitelist," ",fname(1:4));
end
sitelist=unique(regexp(strtrim(sitelist), '\s+', 'split'));
%string2char
nsite=length(sitelist);
site=[];
for i=1:nsite
    tmp=char(sitelist(i));
    tmp=lower(tmp);
    site=[site;tmp];
end
end

注:regexp是以空格为分隔符将str变为str arraychar是用单引号引起来的字符串,string是用双引号引起来的字符串,两者之间的转化用它们的名字即可;char合并用[]string合并用strcmp

Part.IV 结构体相关

Chap.I 读取结构体

比如我现在想读取这样一个文件到结构体中。文件内容如下:

name     sex       age     hobby
aa       man       4       8
ab       wom       5       9
bb       wom       6       10
cc       man       7       11

实现函数如下:

% get struct from clkdif file
function stu=read_dif(file)
fid=fopen(file,'r');
str = fgetl(fid);
S = regexp(str, '\s+', 'split');  %field
n=length(S);
j=1;
while ~feof(fid)
    str = fgetl(fid);
    str=strtrim(str);    %rm the blankSpace on the beg and end
    if str(1)=='-'
        continue;
    end
    if str(1:3)=='EOF'
        break;
    end
    tmp = regexp(str, '\s+', 'split');
    for i=1:n
        eval(['stu(j).',S{i},'=tmp{i};']);
    end
    j=j+1;
end
fclose(fid);
end

调用示例:

clc;clear;
file='C:\Users\OHanlon\Desktop\a.txt';
tic;
stu=read_dif(file);
toc;

在这里插入图片描述

Chap.II 取结构体中某一字段的所有值

可以和上面的函数配合使用

% get the field value from sta
function data=get_fdata(sta,field)
data=[];
af=fieldnames(sta);
n=length(af);
for i=1:n
    if mstrcmp(af{i},field)==0
        break;
    end
end
if (mstrcmp(af{i},field)~=0)
    disp('----error----');
    disp(['The filed ''',field,''' is not in sta!']);
    disp('------end----');
    return;
end
m=length(sta);
for i=1:m
    data=eval(['[data;sta(i).',field,'];']);
end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务框架-学习笔记

1 微服务架构介绍 1.1 系统架构演变历史 单体架构垂直应用架构:按照业务线垂直划分分布式架构:抽出业务无关的公共模块SOA架构:面向服务微服务架构:彻底的服务化1.2 微服务架构概览 1.3 微服务架构核心要素 服务治理&#xff1…

第一章 1:函数

函数概念 函数我们可以简单的理解为一个自变量只对应一个函数值,如图: 如图所示的图像,我们可以把其理解为函数,那非函数呢? 这个就叫做非函数,因为我们的一个自变量对应了两个函数值。 函数的两要素&…

k-means聚类总结

1.概述 聚类算法又叫做‘无监督学习’,其目的是将数据划分成有意义或有用的组(或簇)。 2.KMeans 关键概念:簇与质心 KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的…

分享5款堪称神器的免费软件,建议先收藏再下载

转眼间新年已经过去一个月了,最近陆陆续续收到好多小伙伴的咨询,这边也是抓紧整理出几个好用的软件,希望可以帮到大家。 1.电脑安全管家——火绒 火绒是一款电脑安全软件,病毒库更新及时,界面清晰干净,没…

C++之父做决定了:内部自救!

进入2023年,技术圈都在围观大洋彼岸的聊天机器ChatGPT,但对于编程圈而言,没有什么比内存安全更能引起热议。近期美国国家安全局(NSA)点名批评C,建议使用Rust等内存安全的语言,霎时间让“编程语言…

Linux服务:Nginx反向代理与负载均衡

目录 一、Nginx反向代理 1、什么是代理 2、实现反向代理实验 ①实验拓扑 ②实验目的 ③实验过程 二、反向代理负载均衡 1、反向代理负载均衡调度算法 ①轮询算法 ②加权轮询算法 ③最小连接数算法 ④ip、url 哈希算法 ⑤响应时间fair算法 2、实现反向代理负载均…

Batchnorm和Layernorm的区别

在深度学习训练中,我们经常会遇到这两个归一化操作,他们之间有什么区别呢?我们来简单介绍一下: BatchNorm: 在深度学习训练的时候我们的数据如果没有经过预处理,有可能会出现梯度消失或者梯度爆炸的情况&…

aspnetcore-browser-refresh.js和Visual Studio Browser Link

我在调试ASP.NET Core web应用时,发现请求的页面文档底部多了一部分文件,而在我的页面中却没有包含,故查询资料,在此记录: 图中,可以看到红框部分是多出来了2个脚本 1.aspnetcore-browser-refresh.js 这里…

LeetCode HOT100 (23、32、33)

目录 23、合并K个升序链表 32、最长有效括号 33、搜索旋转排序数组 23、合并K个升序链表 思路:采用顺序合并的方法,用一个变量 ans 来维护以及合并的链表,第 i 次循i 个链表和 ans合并,答案保存到 ans中。 代码: …

数据存储结构B+树 vs LSM Tree

关于存储的几个概念对于一个存储系统来说,底层的存储结构基本上就决定了这个存储系统的功能,或者说性能偏向。比如使用B树的存储系统,那就是查询友好的;使用倒排索引结构的,那就主要是用来做全文搜索的;使用…

idea debug elasticsearch8.6.2 源码

前置依赖: gradle 7.5.1:Gradle | Releases openJDK 17:https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe idea:IntelliJ IDEA 2022.1 (Ultimate Edition) 1、下载源码 8.6.2 zip包 并解压 地址&…

算法训练营 day57 动态规划 最长公共子序列 不相交的线 最大子序和(动态规划)

算法训练营 day57 动态规划 最长公共子序列 不相交的线 最大子序和(动态规划) 最长公共子序列 1143. 最长公共子序列 - 力扣(LeetCode) 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。…

spark为什么比hadoop快

网上一堆人根本对计算框架一知半解就出来糊弄人,常见解答有: spark是基于内存计算,所以快。这跟废话似的,mr计算的时候不也是基于内存? mr shuffle落盘。这也是胡扯, spark shuffle不落盘? 实际…

智能家居Homekit系列一智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

[C++]string类模拟实现

目录 前言: 1. string框架构造 2. 默认函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造 2.4 赋值重载 3. 迭代器 4. 整体程序 前言: 本篇文章模拟实现了C中string的部分功能,有助于大家了解和熟悉string类,虽然这个类不难实…

SSM知识快速复习

SSM知识快速复习SpringIOCDIIOC容器在Spring中的实现常用注解Autowired注解的原理AOP相关术语作用动态代理实现原理事务Transactional事务属性:只读事务属性:超时事务属性:回滚策略事务属性:事务隔离级别事务属性:事务…

JSP+ACCESS网上拍卖平台系统

技术:Java、JSP等摘要:电子商务就是通过互联网来进行的各项商务活动,包括广告、交易、支付、服务等活动。电子商务源于英文Electronic Commerce,简写为EC或E-Commerce。它是人类社会、经济、科学、文化发展的必然产物,是信息化社会…

【计算机考研408】置换选择排序 + 代码 PAT 甲级 1171 Replacement Selection

王道-置换选择排序b站教学视频 置换选择排序的流程 图片比文字更好理解,故不加文字解释 当当前工作区已经满了并且找不到合适的放入当前归并段的元素的时候,开始生成下一个归并段。 此后重复上述过程。 计算机考研可能考察置换选择排序的知识点 …

网易蜗牛读书产品体验报告(1.9.6版本)

本文导览本文是网易蜗牛读书的产品体验报告,在移动阅读市场,网易蜗牛读书以其独特的深度阅读和领读人的阅读机制吸引了一大批的阅读爱好者和忠实用户。本文通过对网易蜗牛读书的体验分析,希望进一步加深对网易蜗牛读书产品的认识了解。产品概…

详细的IO面试题汇总

IO 流简介 IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在…