一、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=1:r lon(i)=test.data(i,8);%經度 lat(i)=test.data(i,7); end plot(lon,lat); xlabel('經度','fontsize',13,'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 -98 63.9 0 -.2 56]; xlswrite(filename,A)

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

clear all filename = 'testdata.xlsx'; A = {'Time','Temperature'; 12,98; 13,99; 14,97}; sheet = 2;%第幾個表格 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(4:end,1);%讀取日期 tem=txt(4:end,7);%讀取溫度 date(end-1:end)=[]%去除無效數據


日期670和671是沒有數據的,通過[]去除。溫度同理。再有,通過end,可以任意讀取某一行到最后的行和列的內容。
3、剔除異常值
clear all a=xlsread('0102.xls'); [num,txt,raw] = xlsread('0102.xls'); date=txt(4:end,1);%讀取日期 tem=txt(4:end,7);%讀取溫度 date(end-1:end)=[];%去除日期空數據 tem(end-1:end)=[];%去除溫度空數據 n=datenum(date,'yyyy-mm-dd HH:MM');%日期數字 t=str2num(char(tem));%將cell類型,轉換成double類型 s=length(t); w=1+0.4*log(s-2); a=mean(t);%均值 e=std(t);%標准偏差 yichang=abs(t-a)>w*e; %判斷語句,肖威勒方法,返回0或者1. t(yichang)=a; %將異常值重新賦值 figure subplot(211),plot(n,t); subplot(212),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 =1:l names{i}=dirs(i).name; [num{i},txt{i},raw{i}] = xlsread(names{i}); date{i}=[txt{i}(4:end,1)];%讀取日期 tem{i}=[txt{i}(4:end,7)]; date{i}(end-1:end)=[]; tem{i}(end-1: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(1) ans = name: '氣象生態環境監測系統報表0101.xls' date: '02-一月-2017 09:04:38' bytes: 436151 isdir: 0 datenum: 7.3670e+05 >> dirs{1} 元胞內容引用自非元胞數組對象。
需要根據對方的類型選擇大括號和小括號。

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


>> a=txt{1};


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


b(1:3)=[]

>> b{end-1:end}=[]
需要大括號或點索引表達式中的一個輸出,但結果有 2 個。
無效的空賦值。’
a=txt(1)

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=1: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')

