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(不支持非鄰行的讀取,也就是說只能讀取相鄰的行和列了~~~~(>_<)~~~~ )

.(選取特定列的方法,待定更新)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM