溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

matlab如何讀取excel中的數(shù)據(jù)

發(fā)布時間:2021-12-30 11:16:00 來源:億速云 閱讀:176 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“matlab如何讀取excel中的數(shù)據(jù)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“matlab如何讀取excel中的數(shù)據(jù)”這篇文章吧。

問題背景:有兩份系內(nèi)人員名單的表格,其中一個是系內(nèi)所有人員的名單(參加實訓(xùn)的名單中有三個人在總名單里沒有錄matlab如何讀取excel中的數(shù)據(jù)),一個是參加某項實訓(xùn)的人的名單,并非系內(nèi)所有人都參加了這次實訓(xùn)matlab如何讀取excel中的數(shù)據(jù)(我就是其中沒參加的一個matlab如何讀取excel中的數(shù)據(jù))。那么現(xiàn)在要通過這兩張表格篩選出沒有參加的人的名單。

方法一:用眼睛找matlab如何讀取excel中的數(shù)據(jù)累死你,(雖然只有一百多人但是也夠折騰的)

方法二:我不知道用excel內(nèi)置的函數(shù)怎么實現(xiàn),可能比較麻煩把matlab如何讀取excel中的數(shù)據(jù)

方法三:用編程語言來實現(xiàn),(我只會matlabmatlab如何讀取excel中的數(shù)據(jù)

思路1:導(dǎo)入兩個Excel中人名的數(shù)據(jù)分別存在兩個cell中,用兩層循環(huán)遍歷它兩,對每個元素進行比較,如果相同就把總名單的的那個元素置空matlab如何讀取excel中的數(shù)據(jù)。(外層是總名單,內(nèi)層是參加實訓(xùn)的人的名單)

思路2:導(dǎo)入兩個Excel中人名的數(shù)據(jù)合并到一塊,然后用我之前講過的數(shù)組去重的一個好方法來去重(類似于,不能照搬,稍微改動),那剩下的不就是沒參加的人的名單么matlab如何讀取excel中的數(shù)據(jù)

有一個BUG:兩個人名一模一樣matlab如何讀取excel中的數(shù)據(jù),那就去比較學(xué)號把matlab如何讀取excel中的數(shù)據(jù)

進行編程前,我需要先講一下matlab如何讀excel中的數(shù)據(jù)。

xlsread函數(shù)可以幫助我們讀取excel。

這里簡單講一個用法把

[num , txt , raw] = xlsread(filename)
Note:
num是指定excel中的數(shù)值部分
txt是指定excel中的文本部分,txt是一個元胞
raw數(shù)值文本在一塊,raw是一個元胞
不想要的用~來代替,不用~也行,反正你又不用,放那又不礙事
filename是指定excel的文件名(帶拓展名)

其余的用法讀者自行help一下,matlab如何讀取excel中的數(shù)據(jù),輸入?yún)?shù)還可以帶上excel中的范圍,
第幾個sheet,等

思路1的Code:

clear
clc
[num_list,name_list]=xlsread('name_list.xlsx');% 導(dǎo)入總名單
[num_practice,name_practice]=xlsread('practice_list.xlsx');% 導(dǎo)入?yún)⒓訉嵱?xùn)人的名單

for i=1:length(name_list)%對總名單遍歷
    name1=name_list{i};
    for j=1:length(name_practice)%對實訓(xùn)名單遍歷
        name2=name_practice{j};
        if strcmpi(name1,name2)==1%看一下實訓(xùn)名單中的人名是否出現(xiàn)在總名單中
            name_list{i}=[];%如果出現(xiàn)就把總名單中的這個元素置空
            %這里你不能用小括號啊,用小括號每一次外層循環(huán)結(jié)束后都可能會把name_list給減少一個維度
            %然后中途就可能會出現(xiàn)索引抽出矩陣的維度的情況
            %用小括號,就直接把大cell中的一個小cell給刪去了
            %用大括號,是把大cell中的小cell中的元素設(shè)為空,小cell還是存在的
            break
        end
    end
end
%還記得cellfun么?不記得的話翻以前的文章去(直接點這句話就行matlab如何讀取excel中的數(shù)據(jù)
disp(name_list(~cellfun('isempty', name_list)))

Result:運行代碼的一秒鐘后

matlab如何讀取excel中的數(shù)據(jù)

思路2的Code:

clear
clc

[num_list,name_list]=xlsread('name_list.xlsx');% 導(dǎo)入總名單
[num_practice,name_practice]=xlsread('practice_list.xlsx');% 導(dǎo)入?yún)⒓訉嵱?xùn)人的名單

WholeName = [name_list;name_practice];%合并兩個名單

%下面對WholeName中的人名去重
names = {};
cnt = 0;
%思路就是兩個名單疊一塊一定有重名;
%有重名那么我下面的ind中一定有兩個或兩個以上的元素,把他們置空;
%如果是非重元素,則單獨保存后再置空;
%由于實訓(xùn)名單中最后添加了三個總名單中沒有的人名。
%所以用本方法會比上一種方法多出三個人來,
%不過這不影響,就是數(shù)據(jù)錄入的問題
while ~isempty(WholeName)
    ind = find(strcmp(WholeName{1},WholeName) == 1);

    if length(ind) >= 2
        WholeName(ind) = [];
    else
        cnt = cnt + 1;
        names{cnt} = WholeName{1};
        WholeName(1) = [];
    end
end
disp(names')

Result:(多出三個人名,為什么請看Code的注釋)運行代碼的一秒鐘后

matlab如何讀取excel中的數(shù)據(jù)

這個方法二是寫著寫著想起來的,matlab如何讀取excel中的數(shù)據(jù),配合著回顧之前學(xué)的東西。

以上是“matlab如何讀取excel中的數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI