如何用matlab处理excel文件中的数据?

如何用matlab处理excel文件中的数据?,第1张

matlab读取excel文件可用xlsread函数,向excel中写数据可用xlswrite函数。\x0d\x0a注意:matlab不纯慎厅识别中文,读写的文孝源件中最好不含有中文。\x0d\x0a \x0d\x0a举例说明如下:\x0d\x0a1、matlab读取excel文件数据:\x0d\x0abb = xlsread('c:\feature.xls', 'A0:A40')\x0d\x0a其中:\x0d\x0ac:\feature.xls为文件存放的地址;\x0d\x0aA0:A40为将要读取的单元格的做隐范围;\x0d\x0abb为读取的矩阵在MATLAB中的变量名。\x0d\x0a\x0d\x0a2、matlab向excel文件写数据:\x0d\x0aa1={'number'}\x0d\x0ab1={'scoreA'}\x0d\x0ac1={'scoerB'}\x0d\x0aA=rand(100,3).*100\x0d\x0axlswrite('a.xls',a1,'Sheet1','A1') % a.xls是文件名,Sheet1是xls中第一个页面,A1为写入位置,下同\x0d\x0axlswrite('a.xls',b1,'Sheet1','B1')\x0d\x0axlswrite('a.xls',c1,'Sheet1','C1')\x0d\x0axlswrite('a.xls',A,'Sheet1','A2:C101')

1、rmmissing  删除缺失的条目

https://ww2.mathworks.cn/help/matlab/ref/rmmissing.html   官方文档

R = rmmissing(A)

如果 A 是向量,则 rmmissing 会删除包含缺失数据的所有条目。如果 A 是矩阵或表,则 rmmissing 会删除包含缺失数据的 所有行 。缺失值的定义取决于 A 的数据类型。(相当于python里面的dropna)

可以:

只删除在 Age 或 ID 表变量中包含缺失值的行。

R = rmmissing(A,'DataVariables',{'Age','ID'})

R = rmmissing(A,'DataVariables',@isnumeric)

2、filloutliers  检测并替换数据中的离群值

https://ww2.mathworks.cn/help/matlab/ref/filloutliers.html

B = filloutliers(A,fillmethod,movmethod,window)

查找 A 中的离群值并根据 fillmethod 替换它们肆乎让。例如,filloutliers(A,'previous') 将离群值替换为上一个非离群值元素。 默认情况下,离群值是指与中位数相顷晌差超过三倍经过换算的中位数绝对偏差 (MAD)的值 。如果 A 是矩阵或表,则 filloutliers 分别对每一列进行运算。如果 A 是多维数组,则 filloutliers 沿大小不等于 1 的第一个维度进行运算。

3、quantile  分位数函数

q_stop = quantile(data(i), 0.95)%从小到大,95%位置的数

q_work = quantile(data(i), 0.05)%从小到大,5%位置的数

相当于 python里面裂局的np.percentile(train_s, 50) 只不过python里面用的是百位数

4、switch数组问题

switch 和 case后面不能用矩阵,怎么改动可以实现???

答:将矩阵写成字符串,注意逗号和空格的区别,如下例所示

judge = [state_rpm state_sampling]  %judge = [0 1]

switch mat2str(judge)

    case '[-1 -1]'

            state2 = -1%没有数据

    case {'[0 0]','[0 -1]','[-1 0]','[0 1]','[1 -1]','[1 0]'}

            state2 = 0%停机

    otherwise

            state2 = 2%停机

end

用耐丛缺matlab处理excel文件中的数据方法如下:

1、首先生成一个带有数据的excel文件,代码如下图所示

2、编制一个函数,其功能是处理excel工作表中的数据的,在这种情况下,设置范围为[-3,3]。具体的函数代码如下图所示:

3、向excel文件 myExample.xlsx中添加一些数据,具体代码如下图所示,可以看到文件 myExample.xlsx文件中的数据已经改变。而且表中的数据范围在 -6.6493 和 3.4845之间。

4、从上一部的结果可以看出表中的数据范围在 -6.6493 和 3.4845之间。这一步就是要读取表中的数据,重置任何超出[-3,3]范围的数据,并且设定数据表的表名,具体代码及结果如下图所示:

5、修正上一步编制的函数setMinMax,使其能够返回数值变化的数据的位置索引(数据从1开始,按列从上到下,从左到右,进行编号索引)。修改代码如下图郑老所示:

6、运行调用该修正后的函数setMinMaxModify(Data),使其返回变化数据的索引值。如下图所示:

注意事项:

要实现excel里面的数据和matlab里面互相导入昌辩,各位需要安装office2007及以上版本(2003没有验证)。wps是不行的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12378834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存