1 将excel中的数据导入到matlab中
将excel中 的数据导入到matlab中采用matlab库函数xlsread
(1)C=xlsread('filename.xls')
(2)C=xlsread('filename.xls',‘ range’),表示读取excel的range范围,range的范围是如下定义:
这个数据的整个区域用标红的框的地址表示即E2:O12
(3)xlsread('filename.xls', ‘sheet’, ‘range’);
sheet对应excel的地方如下图标红的地方:
在matlab中处理此语句后就将表中对应的数据返回给C,并以矩阵的形式呈现。即使用xlsread函数可以导入excel中的任意区域、任意单元的数据到matlab中用矩阵存储,然后矩阵就可以着代码处理了。为了减少路径的书写,可以将excel表格拉入matlab的当前目录下。然后就可以将excel表的名字直接作为xlsread的参数了。并将excel中的数据作为矩阵返回给C。当然了,我得提示我,要进一步的应用xlsread还得参看matlab 的help。
2 将matlab中处理过的数据导入到excel表格中
将matlab中的数据导入excel表采用xlswrite函数。采用最简单的参数将数据导入到当前目录下,如果参数中excel表格不存在则自动生成响应的excel表格。它的用法和xlsread函数对应。
(1) xlswrite('filename.xls', data)将data导入到filename.xls表中,从头开始写入data数据。
如xlswrite('matrix.xls', data),data=[1 2 3; 4 5 6],则matrix.xls表的最开始两行将被写入data这两行数据。
(2) xlswrite('filename.xls', data, ‘range’)。range表示将data导出道excel表的区域,有区域的对角值表示区域。
如xlswrite(‘matrix.xls', data, ‘A12:J29’)则matrix.xls表中的A12:J29’区域将被填写data的数据。
(3) xlswrite('filename.xls', data, ‘sheet‘, ’range‘)。sheet表示将data数据写在excel的哪个表格里面。剩余的单元被赋予控制没看起来像乱码的样子。
如xlswrite(‘matrix.xls', data,’sheet2‘ , ‘A12:J29’)则matrix.xls的sheet2单元的A12:J29单元将被充满数据。
如果sheet名不存在,则在matrix.xls中新建这么一个单元然后将数据天禧恩啊哦对应的位置。
3 编写一个m-function 关于matlab和excel的数据导入导出
%This file shold be changed when read different data
%I shold have coded it in m-function mode
function [A, d] = loda_down_data(sheet, range, number)
%load excel datastructre
C=xlsread('FiveYears.xlsx',sheet, range);
C=C';
%compute martix A
r=length(C);
for i=1:1:r
for j=1:1:r
A(i, j) = C(1, i) / C(1, j);
end
end
xlswrite('result1.xlsx', A, number, 'E2:O12');
%Compute vector and roots
%v is vector,d is roots
[v, d] = eig(A);
[x,y]=find(d==max(d(:)));
xlswrite('result.xlsx', d(x, y),number, 'B13');
B=v;
[R, W]=size(B);
xlswrite('result.xlsx', A/sum(A), number, 'B14:B24');
end
然后在命令窗口中输入
>> loda_down_data('2007', 'E2:L12', '9');回车
就可以将名为FiveYears.xlsx(也可以将文件名作为输入参数)中的2007单元的E2到L12单元的数据读入到matlab中了,经过处理后就将数据读入到result.xlsx中(也可以将输出文件作为参数传入)的第9个单元中的指定区域了。
此次笔记记录完毕。