例如:
要將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:
- 在工作表中執行一個函數 然后返回數值型數據
- 在命令行中輸入以下命令 產生一個隨機的正態分布矩陣(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(不支持非鄰行的讀取,也就是說只能讀取相鄰的行和列了~~~~(>_<)~~~~ )
.(選取特定列的方法,待定更新)