温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

matlab如何读取excel中的数据

发布时间:2021-12-30 11:16:00 来源:亿速云 阅读:176 作者:小新 栏目:大数据

这篇文章主要为大家展示了“matlab如何读取excel中的数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“matlab如何读取excel中的数据”这篇文章吧。

问题背景:有两份系内人员名单的表格,其中一个是系内所有人员的名单(参加实训的名单中有三个人在总名单里没有录matlab如何读取excel中的数据),一个是参加某项实训的人的名单,并非系内所有人都参加了这次实训matlab如何读取excel中的数据(我就是其中没参加的一个matlab如何读取excel中的数据)。那么现在要通过这两张表格筛选出没有参加的人的名单。

方法一:用眼睛找matlab如何读取excel中的数据累死你,(虽然只有一百多人但是也够折腾的)

方法二:我不知道用excel内置的函数怎么实现,可能比较麻烦把matlab如何读取excel中的数据

方法三:用编程语言来实现,(我只会matlabmatlab如何读取excel中的数据

思路1:导入两个Excel中人名的数据分别存在两个cell中,用两层循环遍历它两,对每个元素进行比较,如果相同就把总名单的的那个元素置空matlab如何读取excel中的数据。(外层是总名单,内层是参加实训的人的名单)

思路2:导入两个Excel中人名的数据合并到一块,然后用我之前讲过的数组去重的一个好方法来去重(类似于,不能照搬,稍微改动),那剩下的不就是没参加的人的名单么matlab如何读取excel中的数据

有一个BUG:两个人名一模一样matlab如何读取excel中的数据,那就去比较学号把matlab如何读取excel中的数据

进行编程前,我需要先讲一下matlab如何读excel中的数据

xlsread函数可以帮助我们读取excel。

这里简单讲一个用法把

[num , txt , raw] = xlsread(filename)
Note:
num是指定excel中的数值部分
txt是指定excel中的文本部分,txt是一个元胞
raw数值文本在一块,raw是一个元胞
不想要的用~来代替,不用~也行,反正你又不用,放那又不碍事
filename是指定excel的文件名(带拓展名)

其余的用法读者自行help一下,matlab如何读取excel中的数据,输入参数还可以带上excel中的范围,
第几个sheet,等

思路1的Code:

clear
clc
[num_list,name_list]=xlsread('name_list.xlsx');% 导入总名单
[num_practice,name_practice]=xlsread('practice_list.xlsx');% 导入参加实训人的名单

for i=1:length(name_list)%对总名单遍历
    name1=name_list{i};
    for j=1:length(name_practice)%对实训名单遍历
        name2=name_practice{j};
        if strcmpi(name1,name2)==1%看一下实训名单中的人名是否出现在总名单中
            name_list{i}=[];%如果出现就把总名单中的这个元素置空
            %这里你不能用小括号啊,用小括号每一次外层循环结束后都可能会把name_list给减少一个维度
            %然后中途就可能会出现索引抽出矩阵的维度的情况
            %用小括号,就直接把大cell中的一个小cell给删去了
            %用大括号,是把大cell中的小cell中的元素设为空,小cell还是存在的
            break
        end
    end
end
%还记得cellfun么?不记得的话翻以前的文章去(直接点这句话就行matlab如何读取excel中的数据
disp(name_list(~cellfun('isempty', name_list)))

Result:运行代码的一秒钟后

matlab如何读取excel中的数据

思路2的Code:

clear
clc

[num_list,name_list]=xlsread('name_list.xlsx');% 导入总名单
[num_practice,name_practice]=xlsread('practice_list.xlsx');% 导入参加实训人的名单

WholeName = [name_list;name_practice];%合并两个名单

%下面对WholeName中的人名去重
names = {};
cnt = 0;
%思路就是两个名单叠一块一定有重名;
%有重名那么我下面的ind中一定有两个或两个以上的元素,把他们置空;
%如果是非重元素,则单独保存后再置空;
%由于实训名单中最后添加了三个总名单中没有的人名。
%所以用本方法会比上一种方法多出三个人来,
%不过这不影响,就是数据录入的问题
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中的数据

这个方法二是写着写着想起来的,matlab如何读取excel中的数据,配合着回顾之前学的东西。

以上是“matlab如何读取excel中的数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI