技术标签: matlab Matlab从入门到开发
本章包含以下内容
通过数据导入和导出功能,可以从文件、其他应用程序、Web 服务和外部设备访问数据。可以读取常见文件格式,如 Excel电子表格、文本、图像、音频和视频,以及科学数据格式。通过一些低级的文件 I/O 函数,可以处理任何格式的数据文件。
主要包含以下格式的文件 :文本、电子表格、图像、科学数据、音频和视频、XML 文档
函数 | 功能 |
---|---|
readtable | 基于文件创建表 |
writetable | 将表写入文件 |
readtimetable | 基于文件创建时间表 |
writetimetable | 将时间表写入文件 |
函数 | 功能 |
---|---|
detectImportOptions | 基于文件内容生成导入选项 |
delimitedTextImportOptions | 为带分隔符的文本导入选项对象 |
fixedWidthImportOptions | 等宽文本文件的导入选项对象 |
getvaropts | 获取变量导入选项 |
setvaropts | 设置变量导入选项 |
setvartype | 设置变量数据类型 |
preview | 使用导入选项预览文件中的八行数据 |
函数 | 功能 |
---|---|
readmatrix | 从文件中读取矩阵 |
writematrix | 将矩阵写入文件 |
readcell | 从文件中读取元胞数组 |
writecell | 将元胞数组写入文件 |
readvars | 从文件中读取变量 |
textscan | 从文本文件或字符串读取格式化数据 |
type | 显示文件内容 |
fileread | 以文本格式读取文件内容 |
函数 | 功能 |
---|---|
tabularTextDatastore | 表格文本文件的数据存储 |
样本文件概述
样本文件 outages.csv 包含表示美国电力中断的数据。文件的前几行如下:
Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter storm
SouthEast,2002-01-30 01:18,796,336436,2002-02-04 11:20,winter storm
SouthEast,2004-02-03 21:17,264.9,107083,2004-02-20 03:37,winter storm
West,2002-06-19 13:39,391.4,378990,2002-06-19 14:27,equipment fault
读取文本文件
使用 readtable 导入数据,并显示前五行。readtable 函数会自动检测分隔符和变量类型。
T = readtable('outages.csv');
head(T,5) % show first 5 rows of table
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
'SouthWest' 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 'winter storm'
'SouthEast' 2003-01-23 00:49 530.14 2.1204e+05 NaT 'winter storm'
'SouthEast' 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 'winter storm'
'West' 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 'equipment fault'
'MidWest' 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 'severe storm'
在导入之前指定变量数据类型根据文件中的变量类型,将变量数据类型更新为相应的 MATLAB 数据类型可能有益于数据。例如,outages.csv 中的第一列和第六列为分类列。通过将这两个列指定为 categorical 数组,可以运用 MATLAB 函数处理分类数据。要指定变量的数据类型,有如下方法可以选择:
指定 readtable 中的 Format 名称-值对组
设置文件导入选项的 VariableTypes 属性
使用 Format 名称-值对组指定变量的数据类型,读取数据,并显示前五行数据。在 formatSpec 设定符的 %{yyyy-MM-dd HH:mm}D 部分中,花括号之间的文本描述了日期和时间数据的格式。Format 中指定的值指定了:
文件中的第一列和最后一列为分类数据
第二列和第五列为格式化的日期和时间数据
第三列和第四列为浮点值
formatSpec = '%C%{yyyy-MM-dd HH:mm}D%f%f%{yyyy-MM-dd HH:mm}D%C';
T = readtable('outages.csv','Format',formatSpec);
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
或者,通过使用导入选项的 setvartype 函数,指定变量的数据类型。首先,为文件创建一个导入选项对象。数据文件包含了不同类型的变量。指定第一个和最后一个变量为 categorical 数组,第二个和第五个变量为 datetime 数组,剩余变量为 double。
opts = detectImportOptions('outages.csv');
varNames = opts.VariableNames ; % variable names
varTypes = {
'categorical','datetime','double',...
'double','datetime','categorical'};
opts = setvartype(opts,varNames,varTypes);
将 readtable 与 opts 配合使用以导入数据,然后显示前五行。
T = readtable('outages.csv',opts);
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ____________________ ______ __________ ____________________ _______________
SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT winter storm
SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
West 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
将新变量追加到表中
表 T 中包含了 OutageTime 和 RestorationTime。计算每次电力中断的持续时间并将此数据追加到表中。
T.Duration = T.RestorationTime - T.OutageTime;
head(T,5)
ans=5×7 table
Region OutageTime Loss Customers RestorationTime Cause Duration
_________ ____________________ ______ __________ ____________________ _______________ _________
SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm 148:32:00
SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT winter storm NaN
SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm 226:59:00
West 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault 00:26:00
MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm 65:05:00
将表、元胞数组或数值数组中包含的表格数据从 MATLAB 工作区导出到文本文件。
可使用 writetable 函数将表格数据从 MATLAB 工作区导出到文本文件。创建样本表,将表写入文本文件,然后指定更多选项并再次将表写入文本文件。
创建包含变量 Pitch、Shape、Price 和 Stock 的样本表 T。
Pitch = [0.7;0.8;1;1.25;1.5];
Shape = {
'Pan';'Round';'Button';'Pan';'Round'};
Price = [10.0;13.59;10.50;12.00;16.69];
Stock = [376;502;465;1091;562];
T = table(Pitch,Shape,Price,Stock)
T=5×4 table
Pitch Shape Price Stock
_____ ________ _____ _____
0.7 'Pan' 10 376
0.8 'Round' 13.59 502
1 'Button' 10.5 465
1.25 'Pan' 12 1091
1.5 'Round' 16.69 562
将表 T 导出到一个名为 tabledata.txt 的文本文件。查看文件的内容。默认情况下,writetable 会写入逗号分隔的数据,将表变量名称作为列标题。
writetable(T,'tabledata.txt');
type tabledata.txt
Pitch,Shape,Price,Stock
0.7,Pan,10,376
0.8,Round,13.59,502
1,Button,10.5,465
1.25,Pan,12,1091
1.5,Round,16.69,562
创建表 T2,使用 RowNames 名称-值对组参数指定行名称。
rowNames = {
'M4';'M5';'M6';'M8';'M10'};
T2 = table(Pitch,Shape,Price,Stock,'RowNames',rowNames)
T2=5×4 table
Pitch Shape Price Stock
_____ ________ _____ _____
M4 0.7 'Pan' 10 376
M5 0.8 'Round' 13.59 502
M6 1 'Button' 10.5 465
M8 1.25 'Pan' 12 1091
M10 1.5 'Round' 16.69 562
将 T2 导出到名为 tabledata2.txt 并以制表符分隔的文本文件。使用 Delimiter 名称-值对组参数指定制表符分隔符,并使用 WriteRowNames 名称-值对组参数以包括行名称。查看文件的内容。
writetable(T2,'tabledata2.txt','Delimiter','\t','WriteRowNames',true);
type tabledata2.txt
Row Pitch Shape Price Stock
M4 0.7 Pan 10 376
M5 0.8 Round 13.59 502
M6 1 Button 10.5 465
M8 1.25 Pan 12 1091
M10 1.5 Round 16.69 562
将元胞数组导出到文本文件
打开实时脚本
可采用以下方法之一,将元胞数组从 MATLAB 工作区导出到文本文件:
使用 writecell 函数将元胞数组导出到文本文件。
通过指定输出数据的格式,使用 fprintf 导出元胞数组。
创建样本元胞数组 C。
C = {
'Atkins',32,77.3,'M';'Cheng',30,99.8,'F';'Lam',31,80.2,'M'}
C = 3×4 cell array
{
'Atkins'} {
[32]} {
[77.3000]} {
'M'}
{
'Cheng' } {
[30]} {
[99.8000]} {
'F'}
{
'Lam' } {
[31]} {
[80.2000]} {
'M'}
使用 writecell 导出元胞数组。
writecell(C,'data.dat')
查看文件的内容。
type data.dat
Atkins,32,77.3,M
Cheng,30,99.8,F
Lam,31,80.2,M
或者,使用 fprintf 导入元胞数组。打开一个可供写入的名为 celldata.dat 的文件。使用格式设定符定义 formatSpec,以描述文件中的数据模式。典型的格式设定符包括:表示字符向量的 ‘%s’,表示整数的 ‘%d’ 或者表示浮点数的 ‘%f’。使用空格分隔每个格式设定符,以指示对输出文件使用空格分隔符。在每行数据的末尾包括换行符 (’\n’)。
fileID = fopen('celldata.dat','w');
formatSpec = '%s %d %2.1f %s\n';
确定 C 的大小,并使用 fprintf 函数一次导出一行数据。然后关闭文件。fprintf 将写入一个空格分隔的文件。
[nrows,ncols] = size(C);
for row = 1:nrows
fprintf(fileID,formatSpec,C{
row,:});
end
fclose(fileID);
查看文件的内容。
type celldata.dat
Atkins 32 77.3 M
Cheng 30 99.8 F
Lam 31 80.2 M
将数值数组导出到文本文件
打开实时脚本
可使用 writematrix 将数值数组导出到文本文件。
创建数值数组 A。
A = magic(5)/10
A = 5×5
1.7000 2.4000 0.1000 0.8000 1.5000
2.3000 0.5000 0.7000 1.4000 1.6000
0.4000 0.6000 1.3000 2.0000 2.2000
1.0000 1.2000 1.9000 2.1000 0.3000
1.1000 1.8000 2.5000 0.2000 0.9000
将该数值数组写入到 myData.dat,并将分隔符指定为 ‘;’。然后,查看文件的内容。
writematrix(A,'myData.dat','Delimiter',';')
type myData.dat
1.7;2.4;0.1;0.8;1.5
2.3;0.5;0.7;1.4;1.6
0.4;0.6;1.3;2;2.2
1;1.2;1.9;2.1;0.3
1.1;1.8;2.5;0.2;0.9
文章浏览阅读5.9k次,点赞12次,收藏58次。基于ultralytics最新发布的yolov5,6.2版本,本文对其中的实例分割模型,采用cpp与tensorrt加速推理_利用yolov5实例分割
文章浏览阅读1k次。Jeston TX2 GPIO控输入输出控制主板主要结构介绍主板主要结构介绍TX2主板:_英伟达tx2输入电压与输出电压
文章浏览阅读7.2k次。使用实例实例1:使用wget下载单个文件$wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip说明:以上例子从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。实例2:使用wget -O下载并以不同的文件名保存$wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080wget默认会以最_kali进行wget下载镜像
文章浏览阅读3.5k次,点赞12次,收藏55次。1 model.py文件1.1 初始化函数import torch.nn as nnimport torch.nn.functional as Fimport torch# 初始化函数def weights_init_normal(m): classname = m.__class__.__name__ if classname.find("Conv") != -1: torch.nn.init.normal_(m.weight.data, 0.0, .._cyclegan的鉴别器patchgan的输出尺寸
文章浏览阅读629次,点赞7次,收藏17次。8.method=算法--包括 ward(离差平方和法 )average(类平均法),centroid(重心法)complete(最长距离法),single(最短距离法)median(中间距离法),density(密度法)flexible(可变类平均法),twostage(两阶段密度法),eml(最大似然法),mcquitty(相似分析法)2)根据所确定的样品(或变量)“距离”公式,把距离较近的两个样品(或变量)聚合为一类,其它的样品(或变量)仍各自聚为一类,共聚成 n-1类;_sas 医学场景 聚类分析
文章浏览阅读1.2k次,点赞12次,收藏20次。介绍定义函数调用函数常用编程循环结构apply 函数族apply()lapply()sapply()vapply()mapply()R语言是一种功能强大的统计分析编程语言,广泛应用于数据挖掘、机器学习、统计建模等领域。掌握R语言的编程技巧,可以让我们在处理数据分析任务时更加得心应手。本文将从基础的函数定义和调用开始,逐步介绍R语言中的条件语句、循环结构等常用编程技巧。在R语言中,函数是用来执行特定任务的代码块。通过定义函数,我们可以将复杂的代码重复使用,提高代码的可读性和可维护性。_r语言定义函数
文章浏览阅读758次。sql注入pikachu之盲注练习_pikachu盲注
文章浏览阅读3.1w次,点赞59次,收藏369次。QString是QT提供的字符串类,相应的也就提供了很多很方便对字符串的处理方法。这里把这些对字符串的操作做一个整理和总结。1. 将一个字符串追加到另一个字符串的末尾QString str1 = "hello ";QString str2 = "world";str1.append(str2); // str1 = "hello world"st..._qstring去除右数14位
文章浏览阅读1.3k次。基于Retrofit2.0封装的RetrofitClient. 避免重复创建Retrofit实列调用方便简洁无需重复设置属性的步骤可固定配置 Host,也可动态配置Url,请求头,参数等使用原生的Retrofit请求网络,熟悉的朋友必定了解,在某个ApiServie方法多时 Retrofit设置就显得有点累赘,今天给大家带来对Retrof_java retrofitclient
文章浏览阅读238次。题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题目分析 图 1如果没有头绪的话,很显然使用 暴力解法 是完全可以解决该问题的。即遍历二维数组中的每一个元素,时间复杂度:O(n^2)。其实到这里我们就可以发现,使用这种暴力解法并没有充分利用题目给..._unity 二维数组查看
文章浏览阅读3.6k次。把luaEnv.DoString(File.ReadAllBytes("Assets/Resources/ui2.lua.txt"));改成luaEnv.DoString(File.ReadAllBytes("Assets/Resources/ui2.lua.txt"), "ui2.lua.txt");就可以有断点了_emmylua断点无效
文章浏览阅读2.5k次,点赞12次,收藏2次。如题, 刷到链表的题的时候, 遇到这个问题.它自动生成的代码模板里有这个注释: //leetcode submit region begin(Prohibit modification and deletion)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * _java.lang.nosuchmethoderror: 'listnode listnode.deserialize(java.lang.string