MATLAB——文件读写(2)
一、importdata函数
1、

txt 如图,提取经纬度。
程序如下
clear all
test=importdata('经纬度.txt');
[r,c]=size(test.data);%row行,column列
a=max(size(test.data));%行
l=length(test.data);
for i=:r
lon(i)=test.data(i,);%经度
lat(i)=test.data(i,);
end
plot(lon,lat);
xlabel('经度','fontsize',,'fontweight','bold');
ylabel('纬度');
title('轨迹')
grid on


可以看出importdata将读取的数据生成了一个struct结构体,结构体将txt中的数据分类。所用的数据如下

循环调用经纬度可以画出如图所示的图像。
2、
clear all
a=importdata('road.png')
image(a)


二、excel写入
clear all
filename = 'testdata.xls';
A = [12.7 5.02 - 63.9 -. ];
xlswrite(filename,A)

clear all
filename = 'testdata.xls';
A = [12.7,5.02,-;63.9,0.2,];
xlswrite(filename,A)

clear all
filename = 'testdata.xlsx';
A = {'Time','Temperature'; ,; ,; ,};
sheet = ;%第几个表格
xlRange = 'E1';%第一个位置
xlswrite(filename,A,sheet,xlRange)


三、Excel读取
1、

数据格式是文本类型
clear all
a=xlsread('气象生态环境监测系统报表0102.xls');
[num,txt,raw] = xlsread('气象生态环境监测系统报表0102.xls')

可以看出返回的及时元胞数组,a中是空的,因为Excel中没有数据类型,只有文本,对比可以看出下面的num中也是空的。所以计算或者画图时需要转换文本格式。
2、
clear all
a=xlsread('气象生态环境监测系统报表0102.xls');
[num,txt,raw] = xlsread('气象生态环境监测系统报表0102.xls');
date=txt(:end,);%读取日期
tem=txt(:end,);%读取温度
date(end-:end)=[]%去除无效数据


日期670和671是没有数据的,通过[]去除。温度同理。再有,通过end,可以任意读取某一行到最后的行和列的内容。
3、剔除异常值
clear all
a=xlsread('0102.xls');
[num,txt,raw] = xlsread('0102.xls');
date=txt(:end,);%读取日期
tem=txt(:end,);%读取温度
date(end-:end)=[];%去除日期空数据
tem(end-:end)=[];%去除温度空数据 n=datenum(date,'yyyy-mm-dd HH:MM');%日期数字
t=str2num(char(tem));%将cell类型,转换成double类型 s=length(t);
w=+0.4*log(s-);
a=mean(t);%均值
e=std(t);%标准偏差
yichang=abs(t-a)>w*e; %判断语句,肖威勒方法,返回0或者1.
t(yichang)=a; %将异常值重新赋值 figure
subplot(),plot(n,t);
subplot(),plot(n,t);
datetick('x','HH:MM');%更改坐标形式
grid on

四、多文件读取
1、
clear all
dirs=dir('C:\Users\Administrator\Desktop\test\*.xls')

生成这样一个结构体,只需要将名字提取出来,然后循环提取就可以处理这个文件夹下的所有的xls文件了。注意正则表达式的应用。

clear all
dirs=dir('C:\Users\Administrator\Desktop\test\*.xls');
l=length(dirs); for i =:l
names{i}=dirs(i).name;
[num{i},txt{i},raw{i}] = xlsread(names{i});
date{i}=[txt{i}(:end,)];%读取日期
tem{i}=[txt{i}(:end,)];
date{i}(end-:end)=[];
tem{i}(end-:end)=[];
d{i}=datenum(date{i},'yyyy-mm-dd HH:MM');
t{i}=str2num(char(tem{i})); figure
plot(d{i},t{i});
datetick('x','HH:MM');
grid on
%filename=[names{i} '.jpg'];
saveas(gcf,[names{i} '.jpg']);%注意空格,否则出错
end

注意保存时字符串和图片符号之间的空格,否则出现如下错误。

2、
>> dirs()
ans =
name: '气象生态环境监测系统报表0101.xls'
date: '02-一月-2017 09:04:38'
bytes:
isdir:
datenum: 7.3670e+05
>> dirs{}
元胞内容引用自非元胞数组对象。
需要根据对方的类型选择大括号和小括号。

>> a=txt()
a =
{556x36 cell}


>> a=txt{};


可以看出用{}比()提前一步获取cell中的信息。
a=txt{}
b=a(:,)


b(:)=[]

>> b{end-1:end}=[]
需要大括号或点索引表达式中的一个输出,但结果有 2 个。
无效的空赋值。’
a=txt()

b=a{:,1}

殊途同归。
3、保存形式



所以能用下标访问
五、mat 文件生成读写
clear all
sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true)
geoname=[sheng.NAME]

生成了一个字符串
clear all
sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true)
geoname=sheng.NAME

只有黑龙江省
clear all
sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true)
geoname={sheng.NAME}

生成元胞数组
clear all
p=shaperead('maps/bou2_4p.dbf');
l=length(p);
for i=:l
a{i}=p(i).NAME; %读取省份,注意用元胞数组保存,否则保存不了
end
a=a'; %转置
save mydata a % 保存为dat文件




双击,载入mydata.mat 文件
六、时间异常处理
Excel如下

clear;clc;close all
[Das,Xls]=xlsread('中心80.xlsx'); % 依次得到.xls的数据,文本矩阵,存放在IMs元胞数组里
Das(1,1)
Xls(1,1)



接下来将时间格式转换下
datestr(Xls{1,1},29)

出现这种情况的原因是还有星期二文本,所以失败,正确程序如下
datestr(Xls{1,1}(1:8),29)%只读取星期二之前的数据

将时分秒,从double类型,变为时分秒类型 21:26:05
Das(1,1)
datestr(Das(1,1),'HH:MM:SS')

出现差错
s=mod(Das(1,1),100)
m=(mod(Das(1,1),10000)-s)/100
h=floor(Das(1,1)/10000)

分别提取出时分秒
t=hours(h)+minutes(m)+seconds(s)
datestr(t,'HH:MM:SS')

还原出时分秒
七、图片读取保存
(1)读取
clear all
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');
if isequal(filename,0)
disp('Users Selected Canceled');
else
str=[pathname filename];
im = imread(str);
imshow(im);
end


(2)保存
clear all
x=0:0.01:2*pi;
plot(x,sin(x)); [filename,pathname]=uiputfile({'*.bmp';},'保存图片');%路径和图片名
if ~isequal(filename,0)
str = [pathname filename];%路径名
data= getframe(gcf);%图片内容数据
imwrite(data.cdata,str,'bmp');%数据,文件名,图片格式
% saveas(gcf,str,'bmp');%两种方式都可以保存图片,gcf返回当前图片句柄
close(gcf);
else
disp('保存失败');
end




(3)imwrite函数
clear all
A = rand(50);
imwrite(A,'C:\Users\ning wang\Desktop\123.jpg')

MATLAB——文件读写(2)的更多相关文章
- MATLAB——文件读写(1)
1.文件打开关闭 (1)文件打开 fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功.文件名用字符串形式,表示待打开的数据文件.常 ...
- matlab文件读写处理实例(三)——读取文件特定行
(1) 读取文件特定行 CODE: ; ; if nline==line fprintf(fidout,'%s\n',tline); data ...
- matlab文件读写处理实例(二)——textread批量读取文件
问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\
- matlab文件读写处理实例(一)——不规则文件读取
数据: A) Title: Income Data B) Relevant Information: Marketing Database. Source: Impact Resources, Inc ...
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
- Matlab文件操作
1. Matlab文件操作主要有三个步骤:首先打开文件,然后对文件进行读写操作,最后要关闭文件. 2. fid=fopen(文件名,打开方式) 'r' 只读,文件必须存在(缺省的打开方式) 'w' ...
- Matlab文件和数据的导入与导出
ref: https://blog.csdn.net/zengzeyu/article/details/72530596 Matlab文件和数据的导入与导出 2017年05月19日 15:18:35 ...
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...
- mat文件读写
一起来学演化计算-mat文件读写 觉得有用的话,欢迎一起讨论相互学习~Follow Me Matlab读取和保存mat文件数据 在matlab命令行中输入save 变量名a,将a变量保存在新生成的a. ...
随机推荐
- OAuth 流程与发展总结 (1.0 => 1.0a => 2.0)
OAuth 流程与发展 (1.0 => 1.0a => 2.0) 概述 概述: 开放授权协议 作用: 允许第三方应用访问服务提供方中注册的终端用户的部分资源 下面是官方描述: [OAuth ...
- vue自定义指令要点
vue自定义指令的基础使用这里就不阐述,看官网文档:https://cn.vuejs.org/v2/guide/custom-directive.html 本文用一个实例描述自定义指令的要点,自定义一 ...
- 通过filebeat、logstash、rsyslog采集nginx日志的几种方式
由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器.而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一.如何有效便捷的 ...
- 图像IO
图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复.和绘图性能相关紧密相关的是图像性能.在这一章中,我们将研究 ...
- RocketMQ-2.RocketMQ的负载均衡
目录 RocketMQ的负载均衡 producer对MessageQueue的负载均衡 producer负载均衡 系统计算路由MessageQueue 自定义路由MessageQueue Consum ...
- HTML实体符号代码
1. 特色的 © © © 版权标志 | | 竖线,常用作菜单或导航中的分隔符 · · · 圆点,有时被用来作为菜单分隔符 ↑ ↑ ↑ 上箭头,常用作网页“返回页面顶部”标识 € € € 欧元标识 ...
- webStorm ctrl+L 跳转到指定行line eclipes快捷键
webStorm ctrl+L 跳转到指定行line eclipes快捷键
- C++ 深拷贝和浅拷贝详解
前言 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数. 位拷贝( ...
- 如何区分前端BUG和后台BUG?
测试工程师不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产品的流程.开发方案.开发人员 ...
- 小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...