精华内容
下载资源
问答
  • 如题,这里对数据的处理对于熟悉matlab各函数操作的同学来讲,是常规操作,但对于matlab新手或只是想借用matlab工具将存于PC端文件中的数据通过串口发送出去的工程...这里主要以功能分以下步骤:matlab读取指定文...

    如题,这里对数据的处理对于熟悉matlab各函数操作的同学来讲,是常规操作,但对于matlab新手或只是想借用matlab工具将存于PC端文件中的数据通过串口发送出去的工程人员来说,由于对matlab软件比较陌生,实现各种功能所应该调用的函数没有头绪,所以还是比较麻烦的。这里先简单介绍实现这项操作过程中的几个步骤,然后贴出完整代码,供大家需要时查询。

    这里主要以功能分以下步骤:

    1. matlab读取指定文件数据
    2. 不同类型数据转换为字节数据
    3. 固定时间间隔的实现
    4. 操作串口发送数据

    matlab读取指定文件数据

    这里介绍两种读取方式:选择读取和指定读取

    • 选择读取

    所谓选择读取即在m文件执行过程中由操作者自己选择要读取的文件,先上代码

    clear all%要操作的数据行数(从首行算起)sym num ;num=693;%定义1列,num行数组变量data_lat=zeros(1,num);%选择读取文件数据[FileName PathName]=uigetfile()file=fullfile(PathName,FileName)M=csvread(file);%单独操作M矩阵的第一列1~num行数据data_lat=M(1:num,1);%画出读取的纬度数据,红色plot(data_lat,'r');

    上述代码的最终实现是选择文件读取其数据到M矩阵,并将数据的第一列的1~num行以红色画出图来。

    代码执行后首先会弹出选择窗口,手动选定要操作的文件

    2a5a3cab0c34c723b29e692dc7ad0ebe.png

    图 1

    注意这里可以自由选择不同路径下的文件,要操作的文件不一定在当前工作目录下。选择窗口的打开源于uigetfile()函数的执行,选择文件结束后函数返回被选择文件的路径和文件名

    23eb66af1309f6c18c293d098ce56b8f.png

    图 2

    而后,fullfile()合成被选择文件的完整路径,并返回给file变量,最后通过csvread()函数将文件数据读取进来并形成M数据矩阵,如下原csv文件与M数据对比,原数据类型依次为double/double/float/float/float/float

    db2ea23d0769b306a1fae56c1db8c479.png

    图 3

    这里采用csvread()函数读取数据是因为笔者的原数据文件为.csv格式,需根据文件不同格式选择读取函数,如xlsread()函数

    此外,matlab中数组和C语言的不同在于,没有0号元素,即没有0号下标的元素,都是从1号元素开始

    • 指定读取

    指定读取即在m文件中直接指定要读取文件的完整路径,在程序执行过程中无需再选择文件

    clear all%要操作的数据行数(从首行算起)sym num ;num=693;%定义1列,num行数组变量data_lat=zeros(1,num);%选择读取文件数据% [FileName PathName]=uigetfile()% file=fullfile(PathName,FileName)% M=csvread(file);%指定读取文件数据M=csvread('D:studymatlabuart3926_vehicle_global_position_0.csv');%单独操作M矩阵的第一列1~num行数据data_lat=M(1:num,1);%画出读取的纬度数据,红色plot(data_lat,'r');

    不同类型数据转换为字节数据

    串口常规发送8位字节数据,这里不同类型数据只有按计算机存储规则先转换为字节发送给接收端,接收端再按相同的存储规则将字节数据转换为原数据类型以完成数据的传输,这里首先存在一个数据转换的问题

    %整型inti2ubuff=zeros(1,4);i2ubuff=typecast(int(12345),'uint8');%单精度浮点型floatf2ubuff=zeros(1,4);f2ubuff=typecast(single(data_lon(i)),'uint8');%双精度浮点型doubled2ubuff=zeros(1,8);d2ubuff=typecast(double(data_lat(i)),'uint8');

    ‘=’左侧即为不同数据类型返回的无符号字节数组数据,这里还有要注意的一项是发送端和接收端的数据存储模式,也即大端、小端问题

    固定时间间隔的实现

    数据准备好之后,有时需要一股脑的将数据全部发送出去,有时又需要以固定的周期,定时一部分一部分的发送出去。后者的定时作用,在单片机上一般由定时器timer或滴答定时器等实现精准的时间把控,在matlab中则需要调用函数来实现

    • 整秒定时

    对于整秒时间间隔可以调用pause()函数,如定时3秒调用 pause(3) 即可实现

    • 压秒级定时

    当要实现的时间间隔单位低于秒级时,pause()函数就无能为力了,tic toc函数可以实现

    % 延时200msticwhile toc < 0.2    end

    tic执行时,会获取实时系统时间t0,toc则一直获取当前系统时间t1与t0的时间差,如上,当时间间隔大于或等于0.2时,程序会跳出while循环向下执行,否则会在while中等待,注意这种延时存在一定的精度误差

    操作串口发送数据

    由于只执行简单的串口操作,和单片机控制串口的操作很相似

    • 指定端口,创建端口设备
    s=serial('COM18');
    • 设置串口属性
    set(s,'BaudRate',115200,'parity','none','databits',8,'stopbits',1);

    属性名字,紧跟要设置成的属性

    • 打开串口
    fopen(s);
    • 发送数据
    fwrite(s,sendbuff);

    关闭串口,删除内存中串口设备对象,清除工作空间中串口设备对象

    fclose(s);delete(s);clear s;

    有时打开串口后,程序由于某种原因未能执行完毕,中途退出后,再次运行程序会显示打开串口错误,要打开的串口被占用,这是因为上次运行出错的程序未能正确关闭串口。此时有两种选择,一是关闭matlab软件,解除占用,但是打开matlab并等待就绪会占用很长一段时间,挺让人不耐烦的。二是在命令窗口运行下列函数,解除占用

    %强行关闭串口scoms=instrfindall;stopasync(scoms);fclose(scoms);delete(scoms);

    完整代码

    最后贴出笔者的完整代码,该代码的实现是读取.csv数据以5hz的频率将数据按固定格式发送出去

    %串口发送程序%测试数据在excel表中列顺序:经度、纬度、高度、y轴(东)速度、x轴(北)速度、z轴(下)速度clear all%操作的每列数据行数,从第一行算起sym numnum=693;%中间数据global sendbuffglobal f2ubuffglobal d2ubuffglobal data_latglobal data_longlobal data_altglobal data_vyglobal data_vxglobal data_vzsendbuff=zeros(1,48);f2ubuff=zeros(1,4);d2ubuff=zeros(1,8);data_lat=zeros(1,num);data_lon=zeros(1,num);data_alt=zeros(1,num);data_vy=zeros(1,num);data_vx=zeros(1,num);data_vz=zeros(1,num);%获取日志数据[FileName PathName]=uigetfile();file=fullfile(PathName,FileName);M=csvread(file);data_lat=M(1:num,1);data_lon=M(1:num,2);data_alt=M(1:num,3);data_vy=M(1:num,4);data_vx=M(1:num,5);data_vz=M(1:num,6);%选定串口,创建串口设备对象s=serial('COM18');fclose(s);%设置串口属性set(s,'BaudRate',115200,'parity','none','databits',8,'stopbits',1); %打开串口fopen(s);%固定字节sendbuff(1)='$';sendbuff(2)='E';sendbuff(3)='X';sendbuff(4)='Y';sendbuff(5)='F';sendbuff(6)=48;sendbuff(7)=0;sendbuff(8)=20;sendbuff(9)=20;sendbuff(42)=1;sendbuff(43)=0;sendbuff(44)=0;sendbuff(45)=160;sendbuff(46)=64;sendbuff(47)=0;sendbuff(48)=63;for i=1:num%纬度d2ubuff=typecast(double(data_lat(i)),'uint8');sendbuff(10)=d2ubuff(1);sendbuff(11)=d2ubuff(2);sendbuff(12)=d2ubuff(3);sendbuff(13)=d2ubuff(4);sendbuff(14)=d2ubuff(5);sendbuff(15)=d2ubuff(6);sendbuff(16)=d2ubuff(7);sendbuff(17)=d2ubuff(8);%经度d2ubuff=typecast(double(data_lon(i)),'uint8');sendbuff(18)=d2ubuff(1);sendbuff(19)=d2ubuff(2);sendbuff(20)=d2ubuff(3);sendbuff(21)=d2ubuff(4);sendbuff(22)=d2ubuff(5);sendbuff(23)=d2ubuff(6);sendbuff(24)=d2ubuff(7);sendbuff(25)=d2ubuff(8);%高度f2ubuff=typecast(single(data_lon(i)),'uint8');sendbuff(26)=f2ubuff(1);sendbuff(27)=f2ubuff(2);sendbuff(28)=f2ubuff(3);sendbuff(29)=f2ubuff(4);%vyf2ubuff=typecast(single(data_vy(i)),'uint8');sendbuff(30)=f2ubuff(1);sendbuff(31)=f2ubuff(2);sendbuff(32)=f2ubuff(3);sendbuff(33)=f2ubuff(4);%vxf2ubuff=typecast(single(data_vx(i)),'uint8');sendbuff(34)=f2ubuff(1);sendbuff(35)=f2ubuff(2);sendbuff(36)=f2ubuff(3);sendbuff(37)=f2ubuff(4);%vzf2ubuff=typecast(single(data_vz(i)),'uint8');sendbuff(38)=f2ubuff(1);sendbuff(39)=f2ubuff(2);sendbuff(40)=f2ubuff(3);sendbuff(41)=f2ubuff(4);fwrite(s,sendbuff);% 延时200msticwhile toc < 0.2    endend%延时一段时间等待数据发送完毕再关闭串口,数据未发送完毕时,不能正常关闭串口pause(3);%关闭串口fclose(s);%删除内存中串口设备对象delete(s);%清除工作空间中串口设备对象clear s;
    展开全文
  • Matlab提取excel表格特定地方数据那个‘abc’等非字符串是导入不了的吧,如果你要导入的是纯数字的,我可以告诉你,但是你的txt文件要...请问matlab如何从excel表格读取数据,谢谢用函数xlsread:读取命令:[dat...

    Matlab提取excel表格特定地方数据

    那个‘abc’等非字符串是导入不了的吧,如果你要导入的是纯数字的,我可以告诉你,但是你的txt文件要事先调一下,像 12 33 36 15 13 28这样就行了,然后用excel打开它,注意将文件类型选为所有文件,要不找不到txt文件,找到后打开,第二步会让你...

    请问matlab如何从excel表格中读取数据,谢谢

    用函数xlsread:

    读取命令:[data,text] = xlsread(FileName, SheetName, Range);

    data保存的是数据单元格的值, text保存的是字符串单元格的内容。

    例如:[data,text] = xlsread('C:\Test\test.xlsx'', 'sheet1', 'A2:D10');

    存储方式为矩阵,和Excel表格中的位置一致。

    如果Sheet内都是数据,可直接使用data = xlsread(文件名)。

    如何把Excel表格中的数据导入到matlab中

    第一种方法,使用xlsread函数来读取excel中的数据

    第二种方法,就是把字符转化为数字,使用函数str2num

    MATLAB怎么读取excel文件中的数据

    第一种方法,使用xlsread函数来读取excel中的数据

    第二种方法,就是把字符转化为数字,使用函数str2num

    matlab读取excel单元格中2010/8/1 0:00格式时间0:0...

    1、使用copyMATLAB中提供的系统函数xlsread函数即可,百其主要的调用形式为:a=xlsread('filename.xls');,

    其中a表示读入文件所度保存的变量名称,filename.xls(或者filename.xlsx)表知示excel数据文件。

    2、用下面的命令道进行读取即可:A = xlsread('data.xlsx');。

    展开全文
  • matlab读取表格,并统计成绩,得出最高分,平均分,和中间的成绩
  • 第四,下面计算四位同学数学(Mathematics)和英语(English)的平均成绩、最高分、最低分和各位同学的总成绩。接着输入如下代码:format compactMaths_mean=mean(A(:,1))Maths_max=max(A(:,1))Maths_min=min(A(:,1))...

    第四,下面计算四位同学数学(Mathematics)和英语(English)的平均成绩、最高分、最低分和各位同学的总成绩。接着输入如下代码:

    format compact

    Maths_mean=mean(A(:,1))

    Maths_max=max(A(:,1))

    Maths_min=min(A(:,1))

    English_mean=mean(A(:,2))

    English_max=max(A(:,2))

    English_min=min(A(:,2))

    Amy_sum=sum(A(1,:)),John_sum=sum(A(2,:))

    Julia_sum=sum(A(3,:)),Kite_sum=sum(A(4,:))

    其中,format compact表示行间距紧凑(一会儿在命令行窗口中会看到)。A(:,1)表示第一列,也就是四位同学的数学(Mathematics)成绩,A(1,:)表示第一行,也就是Amy的数学(Mathematics)和英语(English)成绩。其他依次类推。

    展开全文
  • MATLAB读取Excel表格数据和处理数据

    千次阅读 2018-09-11 15:21:00
    https://jingyan.baidu.com/article/c33e3f48d62200ea15cbb5d5.html 转载于:https://www.cnblogs.com/DixinFan/p/9627897.html

    https://jingyan.baidu.com/article/c33e3f48d62200ea15cbb5d5.html

    转载于:https://www.cnblogs.com/DixinFan/p/9627897.html

    展开全文
  • 注意:矩阵的运算的运算符 点乘、点除等编写过程遇到的问题:matlab无法读取excel表格数据解决办法:① 打开excel表格——文件——选项——加载项——COM加载项——转到——去掉复选框中所有打钩(全部不勾选)——...
  • MATLAB导入数据Excel数据并做出散点图
  • 01功能介绍excel是我们常用的一款电子表格软件,其可以直观的展现我们收集的数据,并对其进行数据处理。excel中自带了许多数学函数,可以满足我们的基本日常计算,但当我们需要进行一些复杂计算,比如迭代计算,矩阵...
  • 怎样利用matlab读取一个excel表中多个sheet的数...Matlab如何导入excel数据的方法如下:1、一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')直接在MATLAB中定义矩阵,再复制粘贴...
  • MATLAB读取excel表格中指定位置的数据

    万次阅读 2018-04-11 22:51:47
    help xlsreadxlsread - 读取 Microsoft Excel 电子表格文件 此 MATLAB函数读取名为 filename的Microsoft Excel电子表格工作表中的第一张工作表,并在一个矩阵中返回数值数据。 num = xlsread(filename) num = ...
  • MATLAB 表格数据的处理(str,char,datetime) 读取表格数据
  • 读取EXCEL表格数据MATLAB成为矩阵

    千次阅读 2020-09-13 20:18:07
    读取EXCEL表格数据MATLAB矩阵 data=xlsread(‘filename’,‘sheet’,‘range’) 其中,'filename’为文件路径及文件名,'sheet’为数据表名称,'range’为数据的位置,如“A1:A1:A1:G11”.
  • 利用Matlab读取Excel数据并进行拟合

    千次阅读 2019-08-02 23:27:22
    我们在实际的项目开发中,难免会遇到数据的拟合和矫正,本文分享一种读取excel数据并进行拟合的方法,方便大家利用Matlab辅助进行工程开发。 首先将需要拟合的数据录入Excel表格,如下图 输入导入Excel后,使用...
  • Matlab如何读取Excel 表格数据

    千次阅读 2010-09-09 22:04:00
    % Put a MATLAB array into Excel A = [1 2; 3 4]; ActivesheetRange = get(Activesheet,'Range','A1:B2'); set(ActivesheetRange, 'Value', A); % Get back a range. It will be a cell ...
  • 在许多时候我们要借助于matlab读取excel的内容进行处理,以下是一种常用的处理方法office的表格文件也就是xls文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取...
  • MATLAB读取数据文件

    千次阅读 2018-06-01 10:46:47
    一、读入mat文件 mat文件是MATLAB特有的以.mat为后缀格式的数据文件,load函数读取及save函数保存;二、读取Excel文件 读取:xlsread函数; 写入:xlswrite函数;三、读取TXT文件 读取;importdata函数、txtscan...
  • Matlab如何读取Excel里的数据呢?一起看看下面这篇文章吧!我们可以使用xlswrite,用法是这样的:xlswrite(‘Excel路径+Excel的名称’,’需要输出的矩阵名称’)当然,如果Excel文件和编写程序的文件在同一文件夹,...
  • 运用MATLAB批量读取excel表格

    千次阅读 2020-05-25 23:53:44
    **运用MATLAB批量读取excel表格****需要待读取的excel表格****Step1:读取数据的路径,通过dir函数获取特定地址文件夹中的文件列表。****Step2:循环读取每一个文件的数据,并将其存到一个根据循环命名的与原始数据...
  • 如何将excel表格中大量数据导入matlab中并作图工具:MATLAB、office excel步骤将待导入的矩阵结构的录入Excel中,录入时注意行列要跟原矩阵一一。录入完以后保存数据,为了后续步骤使用方便,命名时最好把它命名为接...
  • 如何用matlab处理excel文件中的数据?那个‘abc’等非字符串是导入不了的zhidao吧,如果你要导入的是纯数字的,我可以告诉你,但是你的txt文件要事先调一下,像12 33 3615 13 28这样就行了,然后用excel打开它,注意...
  • 怎样利用matlab读取一个excel表中多个sheet的数...我想用matlab生成百一份试卷分析到excel中,但不知道度如何设置单元格宽问度和高度,以及边答框宽度,还有字体大小,内请各位赐教,谢谢!容!!Excel = ...
  • 先给出pailie3.xlsx部分数据 一、关于xlsread函数 fid = xlsread('pailie3.xlsx'); 第二列为字符串,读出来显示NaN (Not a Number,不是数字),且fid类型为double 2.[num,txt,raw] = xlsread('pailie3...
  • 如何将excel表格中大量数据导入matlab中并作图1、打开matlab,点击主页下面的数据导入,你可以导入excel数据,这里导入你自己命名的huitushuju文件。2、单击“打开”按钮以导入数据。3、鼠标选择Varname1的所有数据...
  • MATLAB读取写入Excel表格内容

    千次阅读 2015-07-29 23:17:56
    1. 读取Excel文件 (a) 命令方式xlsread:  读取命令:[data,text] =...data保存的是数据单元格的值, text保存的是字符串单元格的内容。 例如:[data,text] = xlsread('C:\Test\test.xls'', 'testsheet', 'B2:D10');
  • 注意:矩阵的运算的运算符 点乘、点除等编写过程遇到的问题:matlab无法读取excel表格数据解决办法:① 打开excel表格——文件——选项——加载项——COM加载项——转到——去掉复选框中所有打钩(全部不勾选)——...
  • Matlab读取和写入excel表格文件

    万次阅读 2017-09-14 18:00:15
    xlswrite函数实例,功能简介:将数据写入微软电子表格文档中。 使用方法: 1、xlswrite(filename, M):将矩阵M的数据写入名为filename的Excel文件中。 2、xlswrite(filename, M, sheet):将矩阵M的数据写入...
  • 说明:输入后matlab将会打开result.xls文件,用鼠标选择需要导入的数据区域,并且可以切换到想要的sheet,这个功能就是人工选择,但是比较强大。 命令2:data = xlsread('result.xls',2, 'D4:G4') 说明:第一个参数...
  • 在许多时候我们要借助于matlab读取excel的内容进行处理,以下是一种常用的处理方法office的表格文件也就是xls文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 177
精华内容 70
关键字:

matlab读取表格数据

matlab 订阅