MATLAB如何导入excel数据
- 格式:docx
- 大小:413.84 KB
- 文档页数:4
%把MATLAB中的矩阵转移到Excel中%可能程序用不了这么复杂,有很多语句可以去掉,大家仅供参考吧。
%有很多pause语句,试用起来可能很不方便excel=actxserver('Excel.Application');%启动Excel并返回名为excel的Activex服务器对象disp('为看清Excel界面及其变化,请把MATLAB界面调整的远小于屏幕!') disp('按任意键,将可看到“Excel界面”出现。
')pauseset(excel,'Visible',1); %使开启的Excel默认界面可见disp('按任意键,可见到Excel界面出现第一张表激活的“空白工作薄”。
') pausewkbs=excel.Workbooks; %新工作薄句柄Wbk=invoke(wkbs,'Add'); %产生空白的新工作薄disp('按任意键,当前激活表由第一张变为指定的第二张。
')pauseSh=excel.ActiveWorkBook.Sheets; %当前激活工作薄的表格句柄sh2=get(Sh,'Item',2); %取得第二张表的句柄invoke(sh2,'Activate'); %使第二张表为当前激活页disp('按任意键,把MATLAB空间中的A矩阵送到Excel的指定位置。
') pauseActsh=excel.Activesheet; %当前激活表的句柄A=[1,3,5,7,9;2,4,6,8,0;3,6,9,12,15;4,8,12,16,20];actshrng=get(Actsh,'Range','A1','E4'); %得到当前表指定区域的句柄set(actshrng,'Value',A); %把A矩阵送到Excel的指定区域disp('按任意键,获取Excel指定区域内的数据,') %第21行disp('并以MyExcel.xls文件形式保存在D:\MATLAB7\work目录上。
使用前应查清楚每个网格的测试条数及当前信标最大标号LoadMultiExcels(Grid_simpl,Beacon_num)Grid_simpl 测试条数Beacon_num 信标最大标号function newsheet = addsheet(WorkSheets,Sheet)% Add new worksheet, Sheet into worsheet collection, WorkSheets.if isnumeric(Sheet)% iteratively add worksheet by index until number of sheets == Sheet.while WorkSheets.Count < Sheet% find last sheet in worksheet collectionlastsheet = WorkSheets.Item(WorkSheets.Count);newsheet = WorkSheets.Add([],lastsheet);endelse% add worksheet by name.% find last sheet in worksheet collectionlastsheet = WorkSheets.Item(WorkSheets.Count);newsheet = WorkSheets.Add([],lastsheet);end% If Sheet is a string, rename new sheet to this string.if ischar(Sheet)set(newsheet,'Name',Sheet);endendclcclear allgrid_num_sum = 10;grid_simpl_num = 50;beacon_num = 24;xlsstr={};xlsdata={};%data_path = uigetdir; %选择文件夹%dat_path = 'E:\VS2008项目\数据库\';data_path_chose = uigetdir;all_info = dir(data_path_chose); %读入目录下文件信息存储为结构体形式b=struct2cell(all_info); %将格式转为cell形式c=b(1,:); %取出其中文件名单元[h,l]=size(c); %计算文件个数%% 提取文件名中的数字部分% s='abc_123.dfg';pat='[0-9]*';% matches=regexp(s,pat,'match')%% 批量读入xls_num = 0; %xls文件数for i=1:lif strfind(c{i},'.xls') %如果是xls文件格式注意括号要使用cell的括号if strfind(c{i},'测试')continue;endtemp = regexp(c{i},pat,'match'); %%提取名字中数字部分用于排列命名index_temp = cell2mat(temp); %%格式转换if (~ischar(index_temp) || ndims(index_temp)>2) %文件名不为数字则跳过continue;endxls_num = xls_num +1;index = str2num(index_temp); %若文件名不包含数字则会出错id_db(:,xls_num) = index;data_path = data_path_chose;data_path = strcat(data_path,'\');data_path = strcat(data_path,c{i});[str{index},data{index}]=xlsread(data_path);endendscale_struct = size(data);scale_cell = size(data{1,1});grid_Num = scale_struct(1,2);DB_original = zeros(xls_num*grid_simpl_num,beacon_num*2+1);%49=48(rssi + num)+1(id),网格数35,每格子测试100条index = 1;ID_max = max(id_db);%% 把所有网格测试整理为一张大表并把十六进制转为十进制%%for i = 1:ID_maxif ~any(id_db == i) %没有此序列continue;endfor row = 2:grid_simpl_num+1for col = 3:50DB_original(index,1) = i;aa =data{1,i}{row,col};DB_original(index,col-1) = hex2dec(aa);endindex = index + 1;endendsaveDB_path_t = strcat(data_path_chose,'\');saveDB_path = strcat(saveDB_path_t,'DB_original');save(saveDB_path,'DB_original');%% 批量存Excel%current_path = pwd;[pathstr,name,ext,versn] = fileparts(data_path_chose);% pathstr = E:\VS2008项目\数据库% name =测RSSI_0721_实验测试% ext =.xls% versn =''save_path = strcat(saveDB_path_t,name);suffix = '.xls';save_path = strcat(save_path,suffix);for i =1:xls_num% if ~any(id_db == i) %没有此序列% continue;% end% xlswrite('data.xls',R,'Sheet1',s);grid_temp = DB_original(grid_simpl_num*(i-1)+1:grid_simpl_num*i,2:49); % 每grid_simpl_num存一次s = sprintf('%d', DB_original(grid_simpl_num*i,1));xlswrite(save_path,grid_temp,s);warning off MATLAB:xlswrite:AddSheet;endmsgbox('数据已处理完毕!','确认');function LoadMultiExcels(Grid_simpl,Beacon_num)% this function is supposed to be used for load all excels in one special% file.% by Liu Wen long in BUPT,10/07/24if (~nargin == 2)||(~isnumeric(Grid_simpl))...||(~isnumeric(Beacon_num)) %判断输入变量个数error('输入参数应数目为2,类型应为整型!');end%grid_num_sum = Grid_num;grid_simpl_num = Grid_simpl;beacon_num = Beacon_num;xlsstr={};xlsdata={};%data_path = uigetdir; %选择文件夹%dat_path = 'E:\VS2008项目\数据库\';data_path_chose = uigetdir;all_info = dir(data_path_chose); %读入目录下文件信息存储为结构体形式b=struct2cell(all_info); %将格式转为cell形式c=b(1,:); %取出其中文件名单元[h,l]=size(c); %计算文件个数%% 提取文件名中的数字部分% s='abc_123.dfg';pat='[0-9]*';% matches=regexp(s,pat,'match')%% 批量读入xls_num = 0; %xls文件数for i=1:lif strfind(c{i},'.xls') %如果是xls文件格式注意括号要使用cell的括号if strfind(c{i},'测试')continue;endtemp = regexp(c{i},pat,'match'); %%提取名字中数字部分用于排列命名index_temp = cell2mat(temp); %%格式转换if (~ischar(index_temp) || ndims(index_temp)>2) %文件名不为数字则跳过continue;endxls_num = xls_num +1;index = str2num(index_temp); %若文件名不包含数字则会出错id_db(:,xls_num) = index;data_path = data_path_chose;data_path = strcat(data_path,'\');data_path = strcat(data_path,c{i});[str{index},data{index}]=xlsread(data_path);endendscale_struct = size(data);scale_cell = size(data{1,1});grid_Num = scale_struct(1,2);DB_original = zeros(xls_num*grid_simpl_num,beacon_num*2+1);%49=48(rssi + num)+1(id),网格数35,每格子测试100条index = 1;ID_max = max(id_db);%% 把所有网格测试整理为一张大表并把十六进制转为十进制%%for i = 1:ID_maxif ~any(id_db == i) %没有此序列continue;endfor row = 2:grid_simpl_num+1for col = 3:50DB_original(index,1) = i;aa =data{1,i}{row,col};DB_original(index,col-1) = hex2dec(aa);endindex = index + 1;endendsaveDB_path_t = strcat(data_path_chose,'\');saveDB_path = strcat(saveDB_path_t,'DB_original');save(saveDB_path,'DB_original');%% 批量存Excel%current_path = pwd;[pathstr,name,ext,versn] = fileparts(data_path_chose);% pathstr = E:\VS2008项目\数据库% name =测RSSI_0721_实验测试% ext =.xls% versn =''save_path = strcat(saveDB_path_t,name);suffix = '.xls';save_path = strcat(save_path,suffix);for i =1:xls_num% if ~any(id_db == i) %没有此序列% continue;% end% xlswrite('data.xls',R,'Sheet1',s);grid_temp = DB_original(grid_simpl_num*(i-1)+1:grid_simpl_num*i,2:49); % 每grid_simpl_num存一次s = sprintf('%d', DB_original(grid_simpl_num*i,1));xlswrite(save_path,grid_temp,s);warning off MATLAB:xlswrite:AddSheet;endmsgbox('数据已处理完毕!','确认');end %function LoadMultiExcels()。
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread(''),此时读取的文件须在MATLAB默认路径下,命令具体用法及参数含义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
1.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),file-Import Data-在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish-导入成功-在workspace中看到图5(导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:
法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4
图5图6图7图8。
1.如何将Excel中的数据在MATLAB界面下显示出来:
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread('noise.xlsx'),此
时读取的文件须在MATLAB默认路径下,命令具体用法及参数含
义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
2.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须是office的(WPS的不可以,MATLAB不能识
别),file-Import Data-在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish-导入成功-在workspace中看到图5(导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:
法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的
plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4
图5
图6
图7
图8。
1. 如何将Excel中的数据在MATLA界面下显示出来:首先Excel必须是office 的(WPS勺不可以,MATLA不能识别),在MATLA中使用命令xlsread读取Excel中的数据到MATLA里,如下所示:[number,txt,raw]=xlsread('noise.xlsx'),此时读取的文件须在MATLA默认路径下,命令具体用法及参数含义可直接用help 命令在MATLA中查找。
读取的数据界面如下:[0.2i60][0.24SO][0.2500][0.2520][0.2540][0.2560][0.2580][0.25Q0][0.2620][0. 2640][0. 2660][0.2680][0.2700][0.2720][0.2740][0. 2760][23.6000][ 28][30.4000]125-2000][ 18][19.2000][2L 2000][17. 20Q0][16.SOOO][17.6000][13.6000][11.2000][13.6000][13.2000][ 10][12.4000]2. 如何将Excel中的数据导入MATLA并在MATLA中画出图像?首先Excel必须是office 的(WPS勺不可以,MATLA不能识别),file-Import Data- 在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish- 导入成功-在workspace中看到图5 (导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:法一:双击workspace中的data打开如图6,选中要画图的数据如图7 (数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
>> [number, txt raw!=zlsr*ad C noise.xlsz J)riunber 二0.246023. 60000.24SC 2& 00000.2500 30. 40000. 2520 25.20000. 2E40 18. 00000.2560 2000Di 2580 21. 20000.2600 17.20000. 2620 16.30000. 2640 17. 60000. 13. 60000* 26SA 1],20000. 2700 13. SQ00Import Data査找范圉(X):库计算机网貉名称'悸改日期,,noise.rriat2014/3/1S 19:181^gnoisenKlsx2014/3/1& 19:01I HKTIAB ▼> ®文件名曲):iriOL XISX文件类型⑴;Recognized Filww取消 |JJWorkspace圄■鱼1鲂I^Lr Select data ...〒Name *田[甌Value<874x2 double* rrrCommand Window■+* □ ? X>> plol (datadia?^ I. = 2), J DisplayMafte J p J dataCl;874? 1;2)a ? J YDataSource 1/ data(i:B74? 1:2^ ) .f igurt (ecf)九—K —图81 f 4New to MATLAB? Watch thi$ Sdg see 口旳口轧 or read Getting 5t^rt 亡cLNew Parallel D”ktq 因❼Ctirrent F file Edit 0ew Ins-ert lo&ls Desktop Window Help□ U 矗B |輿耳U 物穏摇TO □囲I ■口IXCommaHd Window。
如何将matlab中的数据导入excel的方法
如何将matlab中的数据导入excel的方法
如何将matlab中的数据导入excel的方法:
matlab中的数据导入excel步骤2:然后找到你要存放文件的位置复制绝对路径(致谢文件名的话就会存放在当前目录中),如图以f盘根目录为例)
matlab中的数据导入excel步骤3:然后写xlswrite函数,格式如图,具体格式课参看helpxlswrite,如图
matlab中的数据导入excel步骤4:xlswrite函数前一项是路径,后一项是要输出的矩阵。
matlab中的数据导入excel步骤5:然后点击执行,等待一下,就会在指定位置新建xls文件,打开如图:
matlab中的数据导入excel步骤6:如要竖着输出数据的话,将矩阵转置即可
matlab中的数据导入excel步骤7:在后面可控制输出数据在xls 中的范围,如A:D,2:16等
注意:转置后原来的数据只会被覆盖不会消失
matlab中的数据导入excel步骤8:要读出xls中的文件时可用函数xlsread用法相同。
一、matlab 读取excel 数据y=xlsread('0.3C-20to50dischargevoltage.xlsx','sheet1'二、matlab 读入excel 小数位数丢失问题一)如果要在matlab format long g 或format long e还有很多显示的格式,详情参见format 函数的帮助(二)也可以用vpa(A,N),N 为显示的数字位数第一种无法精确控制#¥%!@#4小数位数,只能是5,10 ,15第二种可以精确控制!#@¥……小数位数,只是速度很慢,不适用大矩阵问题三、matlab 将数据保存在excel 中的操作%xlswrite('文件存盘位置\文件名字(自己想取的文件名).xls',在matlab 工作窗口中的数组)%例如:将数组A 存盘到d 盘的003文件夹xlswrite('d:\003.xls',A)稍微复杂些:bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B1:B6')xlswrite('test.xlsx',cc','Sheet2','C1:C6')bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B')xlswrite('test.xlsx',cc','Sheet2','C')与上面程序的效果一样PS :如果每次都要存入不同的!#¥……@文件,需要每次修改程序中要保存的文件名四、matlab如何多开几个M编辑窗口窗口右上角有一个箭头,点一下就可以了。
MATLAB导⼊txt和excel⽂件技巧汇总:批量导⼊、单个导⼊在使⽤MATLAB的时候,想必各位⼀定会遇到导⼊数据的问题。
如果需要导⼊的数据其数据量巨⼤的话,那么在MATLAB编辑器中将这些数据复制粘贴进来,显然会在编辑器中占据巨⼤的篇幅,这是不明智的。
⼀般来说储存这些数据的⽂件有两种形式:txt⽂件excel表格针对这两种类型的⽂件,需要使⽤两个不同的函数。
就导⼊txt⽂件来说,个⼈习惯使⽤importdata这个函数。
@⽬录导⼊txt⽂件01 | 导⼊全是数字类型的txt⽂件(⼀)如果导⼊的txt⽂件中,储存的数据全是数字类型的,且同⼀⾏的两个数字之间使⽤空格或者制表符进⾏分隔。
这种形式的txt⽂件如下所⽰。
储存这种形式数据的txt⽂件直接使⽤如下代码即可。
present01=importdata('present01.txt');在MATLAB运⾏之后的结果如下:02 | 导⼊全是数字类型的txt⽂件(⼆)如果数据不像刚才给出的数据那么规整,那么就不能继续使⽤上⾯的代码了如果txt⽂件储存如下的数据:很明显这个txt⽂件,第⼀⾏只有1,第⼆⾏有2和3,第三⾏有4、5、6和7,第四⾏有8、9、10和11,第五⾏有12、13、14和15。
如果我们继续使⽤上⾯的代码,看看能否成功导⼊数据。
present02=importdata('present02.txt');在MATLAB运⾏之后结果如下,是⼀个15⾏1列的矩阵,这个很明显和我们想要的形式不太⼀样。
可以发现前两⾏的数据个数与后三⾏的数据个数不同,所以在实际导⼊的时候需要分开导⼊,这时可以使⽤如下代码导⼊present02.txt⽂件。
filename='present02.txt'; %⽂件名delimiterIn = ' '; %列分隔符headerlinesIn = 2; %读取从第 headerlinesIn+1 ⾏开始的数值数据present02=importdata(filename,delimiterIn,headerlinesIn);dataset=present02.data; %导出的3⾏以后的数据,即3⾏4列的矩阵parameters=present02.textdata; %导出的2⾏以前的数据,即2⾏1列的元胞数组filename是⽂件名delimiterIn是列分隔符,也就是同⼀⾏的两个数据之间是如何分隔的,可以是空格,也可以是制表符,也可以是逗号headerlinesIn表⽰读取从第 headerlinesIn+1 ⾏开始的数值数据,因为前两⾏的数据个数与后三⾏的数据个数不同,所以这⾥headerlinesIn = 2,即从读取从第 3⾏开始的数值数据。
1.如何将Excel中的数据在MATLAB界面下显示出来:
首先Excel必须就是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread('noise、xlsx'),此时读取的文件须在MATLAB默认路径下,命令具体用法及参数含义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
2.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须就是office的(WPS的不可以,MATLAB不能识别), Data-在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish-导入成功-在workspace中瞧到图5(导入的数据)。
至
此数据导入成功。
下面就是如何利用该数据绘图:
法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4 图5
图6
图7
图8。
matlab导入excel数据的方法
在Excel中录入好数据以后经常需要把数据导入到matlab 中,具体该如何导入Excel数据呢?下面是店铺带来的关于matlab 导入excel 数据的方法,希望阅读过后对你有所启发!
matlab 导入excel数据的方法:
导入Excel数据步骤1:将待导入的矩阵结构的数据录入Excel中,录入时注意行列要跟原矩阵一一对应
导入Excel数据步骤2:录入完以后保存数据,为了后续步骤使用方便,命名时我们最好把它命名为我们接下来在MATLAB中要引用的变量名(比如在MATLAB中要将该矩阵作为B矩阵参与运算,就可以把它命名为B.xls,xls为文件扩展名)
导入Excel数据步骤3:运行MATLAB程序,点击工具栏上的Import Data工具按钮
导入Excel数据步骤4:在弹出的“Import Data”对话框中找到前面保存的数据文件(B.xls),“打开”
导入Excel数据步骤5:弹出“Import”窗口,在窗口工具栏左侧导入选项中选择“Matrix(矩阵)”,然后点击工具栏右侧的“勾”,导入数据
导入Excel数据步骤6:关闭“Import”窗口,回到MATLAB主程序,在WorkSpace(工作空间)中可以看到刚刚导入矩阵变量,接下来就可以对矩阵进行运算了
导入Excel数据步骤7:每次关闭MATLAB程序都会将工作空间中的变量清空,所以如果经常用到该变量,不妨将该变量保存为MAT 文件
导入Excel数据步骤8:这样一来每次打开MATLAB,只需要双击MAT文件便可以将变量导入工作空间。
下面我就通过实例介绍一下MATLAB如何导入excel数据。
1.读取sheet1中的所有数据
我们以03版excel为例,假设excel中数据为
默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤),然后再MATLAB主窗口中输入下面命令:[NUM,TXT,R AW]=xlsread('example'),其中example是你的excel名,这里我所有
的数据都在example.xls中。
输入以上命令,回车
NUM返回的是excel中的数据,TXT输出的是文本内容,RAW输出的是未处理数据,这里因为文本占用的矩阵一共是8行6列,所以就输出了如上内容。
一般情况下,我们读取的都是excel中的数据,所以可以直接用[NUM]=xlsread('example'),只输出数据矩阵便可。
2.读取指定sheet中的数据
假如我们想读取第二个sheet中的数据,这里请注意:matlab读取exce l中的数据是按照sheet在excel中的排放顺序来的,sheet3现在排在
第二位,我们输入命令[NUM]=xlsread('example',2),回车结果如下:
3.读取指定单元格中的数据
以sheet2中的数据为例
假设我们读取A3-D7之间的数据,那么我们输入命令[NUM]=xlsread('ex ample',2,'A3:D7'),回车,结果如下:
4.如果以上经验有用,请点击下方的有用按钮支持我的工作,谢谢!。
下面我就通过实例介绍一下MATLAB如何导入excel数据。
1.读取sheet1中的所有数据
我们以03版excel为例,假设excel中数据为
默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤),然后再MATLAB主窗口中输入下面命令:[NUM,TXT,R AW]=xlsread('example'),其中example是你的excel名,这里我所有
的数据都在example.xls中。
输入以上命令,回车
NUM返回的是excel中的数据,TXT输出的是文本内容,RAW输出的是未处理数据,这里因为文本占用的矩阵一共是8行6列,所以就输出了如上内容。
一般情况下,我们读取的都是excel中的数据,所以可以直接用[NUM]=xlsread('example'),只输出数据矩阵便可。
2.读取指定sheet中的数据
假如我们想读取第二个sheet中的数据,这里请注意:matlab读取exce l中的数据是按照sheet在excel中的排放顺序来的,sheet3现在排在
第二位,我们输入命令[NUM]=xlsread('example',2),回车结果如下:
3.读取指定单元格中的数据
以sheet2中的数据为例
假设我们读取A3-D7之间的数据,那么我们输入命令[NUM]=xlsread('ex ample',2,'A3:D7'),回车,结果如下:
4.如果以上经验有用,请点击下方的有用按钮支持我的工作,谢谢!。