您的位置:首页 > 编程语言 > MATLAB

matlab的excel的读和写(生成脚本m文件)

2015-09-23 14:05 1056 查看
1. 读取Excel文件

(a) 命令方式xlsread:

读取命令:[data,text] = xlsread(FileName, SheetName, Range);

data保存的是数据单元格的值, text保存的是字符串单元格的内容。

2. 将MATLAB数据写入到Excel

写入命令:xlswrite(FileName, Output, SheetName, Range)

其中Output为要写入的数据,可以是矩阵也可以是cell类型

使用例子1:

%% 导入数据
[~, ~, raw] = xlsread('1.xlsx','Shee');
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};

%% 将非数值元胞替换为 NaN
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % 查找非数值元胞
raw(R) = {NaN}; % 替换非数值元胞

%% 创建输出变量
data = reshape([raw{:}],size(raw));

%% 将导入的数组分配给列变量名称
VarName1 = data(:,1);
VarName2 = data(:,2);
VarName3 = data(:,3);
VarName4 = data(:,4);
VarName5 = data(:,5);
VarName6 = data(:,6);
VarName7 = data(:,7);
VarName8 = data(:,8);
VarName9 = data(:,9);
VarName10 = data(:,10);
VarName11 = data(:,11);

%% 清除临时变量
clearvars data raw R;

这个代码如何生成呢?

在命令窗输出uiimport,然后选择要导入的文件

点击:


然后就可以看到生成matlab代码,就可以安装自己要求编写需要导入的内容了。

使用例子2:

excelPath='excel';
excelStr = dir(fullfile([excelPath,'*.xlsx']));
excelName = excelStr.name;
savePath='';
P = '..\';
D = dir([P '*.png']);
A=[];
[~,TXT1] = xlsread([excelPath,excelName],'SheetName','C1:L1');
[~,~,TXT2] = xlsread([excelPath,excelName],'sheetname','A2:B251');
 for k = 1 : length(D)
        x=imread([P D(k).name]);
        s=strcat(savePath,D(k).name);
        imwrite(x,s);
end<span style="font-family:Microsoft YaHei;font-size:18px;">
</span>


使用例子3:

(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单元将被充满数据。

大家觉得每次是不是excel很烦需要通过代码编写,为什么不写一个脚本来实现读和写的功能呢?

my_excel.m关于matlab和excel的数据导入导出

function [A, d] = loda_down_data(sheet, range, number)
	C=xlsread('test.xlsx',sheet, range);
	C=C';
	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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: