首页 > 代码库 > matlab怎么选取excel的特定列构成数组

matlab怎么选取excel的特定列构成数组

例如:

要将A、C、D、E四列组成一个数组,即除去B列。

首先看matlab读取excel专用函数xlsread是否提供了相应的功能。

num = xlsread(filename)

读取名为filename文件的数据,默认读取sheet1中的数据。filename要包括文件路径。

num = xlsread(filename,sheet)

读取名为filename文件工作表sheet中的的数据,

num = xlsread(filename,xlRange)

读取名为filename文件的数据,默认读取sheet1中的数据,读取xlRange列的

num = xlsread(filename,sheet,xlRange)

读取名为filename文件工作表sheet,xlRange列中的的数据

num = xlsread(filename,sheet,xlRange,‘basic‘)

用基本的形式读取电子表格中的数据,the default on systems without Excel for Windows.(不知道怎么翻译?难道是说不支持windows下的excel?),如果没有工作表和列的特别要求,默认为空字符。例如: num= xlsread(filename,‘‘,‘‘,‘basic‘).

不过我在matlab下运行的num= xlsread(‘D:\program files\matlab\example.xls‘,‘‘,‘‘,‘basic‘)报错,我的是windows系统

[num,txt,raw]= xlsread(filename)

num返回filename中的数据部分数组,txt部分用NaN表示

txt返回filename的txt值

raw返回和原数组相同大小的元胞数组

Example:

[num,txt,raw]= xlsread(‘D:\program files\matlab\example.xls‘)

>> example

num =

???? 1???? 2???? 2???? 3
???? 5???? 6???? 6???? 7
???? 3???? 9???? 8??? 14
?? NaN?? NaN?? NaN???? 5


txt =

??? ‘yx‘??? ‘s‘??? ‘a‘


raw =

??? [ 1]??? [2]??? [2]??? [ 3]
??? [ 5]??? [6]??? [6]??? [ 7]
??? [ 3]??? [9]??? [8]??? [14]
??? ‘yx‘??? ‘s‘??? ‘a‘??? [ 5]

?

___ = xlsread(filename,-1)

交互式的打开一个windows下的excel窗口读取excel中的数据

Example:

num= xlsread(‘D:\program files\matlab\example.xls‘,-1)

先在打开的excel中选取数据,再返回matlab点击弹出窗口中的确定(如上图)即可。不过好像也不支持隔列选取,只支持多列连续选取

[num,txt,raw,custom]= xlsread(filename,sheet,xlRange,‘‘,functionHandle)

执行一个函数,返回多种类型的矩阵

Example:

  1. 在工作表中执行一个函数 然后返回数值型数据
  • ????? 在命令行中输入以下命令 产生一个随机的正态分布矩阵(gallery函数用法参照help)

????????????? misc = pi*gallery(‘normaldata‘,[10,3],1);
????????????? xlswrite(‘myExample.xlsx‘,misc,‘MyData‘);

??

  • 编写特定功能的函数(此处是将[-3 3]以外的数据变成-3或3,按照最近原则)

???????? function [Data] = setMinMax(Data)

? minval = -3; maxval = 3;
?
? for k = 1:Data.Count
??? v = Data.Value{k};
??? if v > maxval || v < minval
?????? if v > maxval
????????? Data.Value{k} = maxval;
?????? else
?????????? Data.Value{k} = minval;
?????? end
??? end
? end

  • 最后按照函数实现对数据的处理

trim = xlsread(‘myExample.xlsx‘,‘MyData‘,‘‘,‘‘,@setMinMax)

(用空字符代替XRange和basic参数,此处用了两个空字符当占位符 placeholders)

2 返回数据的索引(按列计算)

  • 函数要满足返回索引的需求

function [Data,indices] = setMinMax(Data)

? minval = -3; maxval = 3;
? indices = [];
?
? for k = 1:Data.Count
??? v = Data.Value{k};
??? if v > maxval || v < minval
?????? if v > maxval
????????? Data.Value{k} = maxval;
?????? else
?????????? Data.Value{k} = minval;
?????? end
?????? indices = [indices k];
??? end
? end

  • 调用指定函数

[trim,txt,raw,idx] = xlsread(‘myExample.xlsx‘,...‘MyData‘,‘‘,‘‘,@setMinMax);


>>disp(idx)

>>7???? 9??? 11??? 15??? 19??? 20??? 23??? 24??? 30

?

以上就是关于xlsread函数的全部变体和用法

在help帮助的最后写明了xlsread函数的两个限制:

1? Limitationsxlsread reads only 7-bit ASCII characters(只能读取七位ASCII序列)
2? .xlsread does not support non-contiguous ranges(不支持非邻行的读取,也就是说只能读取相邻的行和列了~~~~(>_<)~~~~ )

.

?

?

?

?

?

matlab怎么选取excel的特定列构成数组