精华内容
下载资源
问答
  • 关于matlabtable数据结构的使用

    万次阅读 2017-09-01 20:45:33
    关于matlabtable数据结构的使用 matlab中比较好使的数据结构有数组、矩阵、元胞数组、结构数组等等,但随着大数据的普及,在2013以以上版本的的matlab中,出现了类似R语言中的列表一样的一个新的数据结构——...

    关于matlab的table数据结构的使用

    matlab中比较好使的数据结构有数组、矩阵、元胞数组、结构数组等等,但随着大数据的普及,在2013以以上版本的的matlab中,出现了类似R语言中的列表一样的一个新的数据结构——table。

    关于table的简单的介绍可以参考:
    Matlab table数据结构三篇
    配合着doc文档,很快就能驾轻就熟。然而Matlab求全不求精,数据分析和处理很多方面做得并不如R语言。


    一个简单的例子,来谈table的连接

    有两个表格大概长成这样:
    address

    all

    我想做的是通过姓名做为关键词,将两个表格拼接在一块。因为不是行对行一一对应的,我们需要查找,进行拼接。你可以写一个循环一条一条判断,再拼接在一块,如果不嫌麻烦的话。Matlab的table数据结构,跟数据库里面的表示一样样的,简单的join函数就可以实现这个功能,如下:

    clc
    clear
    close all
    %% 读取并处理数据,有时候matlab老是出错,重启一下就行了。
    ad = readtable('adress.xls','ReadVariableNames' ,1,'FileType','spreadsheet');
    all =readtable('all.xlsx','ReadVariableNames' ,1,'FileType','spreadsheet');
    address = ad;
    stu = all(1:9613,1:5);
    stu = stu(find(stu.x_____==2),:);
    %% 数据筛选与合并
    %add_len = size(address,1);
    %new_table = innerjoin(address,stu);
    % stu.Properties.VariableNames = cell(stu.Properties.VariableNames);
    % address.Properties.VariableNames = cell(address.Properties.VariableNames)
    % stu.Properties.VariableDescriptions
    % stu.x____ = num2cell(stu.x____)
    % stu.x_____ = num2cell(stu.x_____)
    % stu(:,1) = num2cell(stu{:,1} )
    new_table = outerjoin(stu,address,'Type','left','MergeKeys',true,'keys','x__');
    writetable(new_table,'students.csv');
    

    我这里用的是向左外拼接,事实上用自然拼接、向右外拼接以及内拼接都是可以的。下面是一些基本的操作方法,学过数据库的一眼就能看懂。

    • readtable 读入一个文件,创建table对象
    • writetable普通函数,把table写入一个文件,内部调用write类方法,把table写入一个文件
    • size 返回table的高和宽,表头不计
    • width 返回table的宽
    • height返回table的高
    • ndims 返回table的维度
    • numel 返回table高和宽的乘积
    • horcat 横向串接table
    • vercat 纵向串接table
    • intersect 返回两表中的相同的行
    • ismember查询表中的行是否在另一表中也出现
    • setdiff 查询两表之间的差异
    • unique 返回的表中没有相同的行
    • sextor 两个集合交集的非
    • union 两个集合的并
    • join 自然连接
    • innterjoin内连接
    • outerjoin 外连接
    • summary 返回table的基本信息
    • sortrows 给table按照制定的row排序
    • stack把table的各列摞成一列
    • unstack 把table的某一列展开成为若干列
    • ismissing找到table中那些没有赋值的项,返回logical index
    • standizeMissing 给未赋值项赋默认值
    • varfun把函数作用在table中选定的变量上
    • rowfun 把函数作用在table的每列上

    tip:
    1、建议使用matlab菜单栏中自带的导入数据按钮,再生成代码,就省了不少事了。
    2、“错误使用 table/joinUtil (line 121)
    3、由继承机制,对矩阵值的选取操作对table也是可行的。比如table0(3:5,2:end)等等。

    展开全文
  • MATLAB】关于matlabtable数据使用

    万次阅读 2020-08-28 11:03:09
    上一次的训练中一道数据处理的题目,五千来号数据,作为matlab新手这怎么搞,后面发现可以导入,但是问题来了,我根本提取不出那些数据啊(苦恼)。后面发现这些数据从excel导入进去后是table类型的,然后去找了相关...

    前言

    上一次的训练中一道数据处理的题目,五千来号数据,作为matlab新手这怎么搞,后面发现可以导入,但是问题来了,我根本提取不出那些数据啊(苦恼)。后面发现这些数据从excel导入进去后是table类型的,然后去找了相关资料,终于有点会使了,于是记录整理一下,下次忘了还可以再看看,嘻嘻~

    table简介

    MATLAB引入了这个新的数据类型,为的就是更好的用来做统计,就可以理解成一个表(类似统计 工具箱中的dataset),可以存放各种类型的容器。第一行就作为表头,如果取的表头符合matlab的命名规则,那么该列直接如此命名。

    数据导入

    1.通过导入数据构造table对象

    我们可以使用readtable 函数,构造一个新的table对象,把csv文件中的数据导入到该对象中。readtable函数接受文件名称作为输入,返回一个table对象。

    % 通过readtable函数来构造table对象
    >> nasdaq = readtable('xxxx.csv')
    Warning: Variable names were modified to make them valid MATLAB identifiers. 
    nasdaq =                                                                
        Symbol             Name              MarketCap     IPOYear
        ______    _______________________    __________    _______
        'AAPL'    'Apple Inc'                '$742.63B'    1980   
        'AMZN'    'Amazon.com Inc'           '$173.33B'    1997   
        'MSFT'    'Microsoft Corporation'    '$346.9B'     1986   
    

    ps:warning 的原因是该列表把第一行作为了表头,缩了空格,修改了表头

    调用table构造函数来构造table对象

    我们还可以通过直接调用table类的构造函数来创建table对象。
    上栗子

    下面程序中第1,2行用元胞数组来表示表中每一列的数据,第3行规定了表头的名称,第4行调用table的构造函数创建table对象,先输入数据,再输入表头的名称。表头通过table对象的VariableNames属性来设置。

    name={'Abby';'Bob';'Charlie'};                        % 3x1列向量
    number={'5086470001';'5086470002';'5086470003'};      % 3x1列向量
    colName={'Name','Number'};
    phonetable=table(name,number,'VariableNames',colName) 
    

    通过转换函数构造table对象

    除了使用table的构造函数来创建table对象,还可以使用转换函数把其它数据类型转成table,下列通过数组数据类型类构造table。下面的程序的1-2行,我们利用financial工具箱中的fetch函数,从Yahoo财经处得到雅虎从3月1日到3月10日的股票价格,fetch函数将返回一个数组,第3行我们利用array2table转换函数把得到数组转成table。

    % 通过array2table创建table对象  
    conn = yahoo;
    array = fetch(conn,'YHOO','3/1/2015','3/10/2015');
    yhoo = array2table(array,...
      'VariableNames', {'date','open','high','low','closing','volumn','adjusted'})
    

    访问table中的数据

    理解这个的最好方式就是栗子:

    通过表Table.1所建立的table对象,在命令行中显示如下:
    (以访问这个table为例)

    % nasdaq table在命令行中的显示
    nasdaq = 
        Symbol             Name              MarketCap     IPOYear
        ______    _______________________    __________    _______
    
        'AAPL'    'Apple Inc'                '$742.63B'    1980   
        'AMZN'    'Amazon.com Inc'           '$173.33B'    1997   
        'MSFT'    'Microsoft Corporation'    '$346.9B'     1986    
    

    1.我们可以通过使用dot+Variablename的语法直接访问table中的列,返回的结果是cell格式的数据:

    % 使用dot语法访问table中的数据
    >> nasdaq.Symbol           % dot格式+变量名的访问方式
    ans = 
        'AAPL'
        'AMZN'
        'MSFT'
    >> class(nasdaq)           % 返回cell格式的数据
    ans =
    cell  
    %table类重载了subsref函数,于是支持MATLAB传统的圆括号下标访问,如果要访问第一行,则:
    % 使用下标语法访问table中的数据
    >> nasdaq(1,:)
    ans = 
        Symbol       Name        MarketCap     IPOYear
        ______    ___________    __________    _______
    
        'AAPL'    'Apple Inc'    '$742.63B'    1980     
    

    2.使用圆括号,返回的结果仍然是table,如果要访问第2到3行,则:

    % 使用下标语法访问table中的数据
    >> nasdaq(2:3,:)
    ans = 
        Symbol             Name              MarketCap     IPOYear
        ______    _______________________    __________    _______
    
        'AMZN'    'Amazon.com Inc'           '$173.33B'    1997   
        'MSFT'    'Microsoft Corporation'    '$346.9B'     1986     
    

    返回的结果仍然是table。
    3.table数据结构支持MATLAB传统的花括号下标访问,返回的结果是cell格式的数据

    % 花括号下标访问
    >> nasdaq{:,1}   % 花括号下标访问,返回第一列中的数据
    ans = 
        'AAPL'
        'AMZN'
        'MSFT' 
    还可以把Dot语法和下标语法结合起来获取数据,下例代码访问table第一列的第三行,返回的结果是元胞。
    % Dot语法和圆括号下标访问结合
    >> nasdaq.Symbol(3)
    ans = 
        'MSFT'
    >> class(ans)     % 圆括号下标访问,返回结果是元胞 
    ans =
    cell  
    

    (这个图还挺有用的)
    图Figure.1中以表Table.1中的数据为例,总结了几种访问table中不同区域的数据的方法。
    Figure.1 访问table中的数据

    在这里插入图片描述

    参考网址:https://www.ilovematlab.cn/article-52-1.html

    展开全文
  • MATLAB读取文本数据处理

    千次阅读 2017-08-30 17:31:46
    最近接到了一个小任务,具体要求是计算某地19km和21km高度的风速...考虑到MATLAB具有强大的数据处理能力,因此用MATLAB完成了这个题目,程序如下: %function [daysouth,daynorth,nthvec,sthvec,nthstd,sthstd,nsvec,

    最近接到了一个小任务,具体要求是计算某地19km和21km高度的风速情况,根据原始的风速数据,算出该地6到9月份吹南风和北风各有多少天,平均的风速是多少,以及标准差等指标。


    考虑到MATLAB具有强大的数据处理能力,因此用MATLAB完成了这个题目,程序如下:

    %function [daysouth,daynorth,nthvec,sthvec,nthstd,sthstd,nsvec,nsstdvec]=DayOfSouthWind(S1,hlow,hhigh)
    function DayOfSouthWindWriteExcel
    S1='wind_Malan_SpeedAngle2015060100.dat';
    table=zeros(8,8);%初始化风速表
    daysouth=0;%南风的天数
    daynorth=0;%北风的天数
    vecmonth=[];%该月的南北风向平均风速向量,每个元素为一天的平均风速,总共31个
    hlow=18500;
    hhigh=19500;
    for i=0:3%6到9月四个月
        if i==0|i==3 %6月份和9月份都是30天
            mndays=30;
        else
            mndays=31;%7月份和8月份都是31天
        end
        S1(26:27)=num2str(i+6,'%0.2d');%更新月份
        for j=0:6:18%00时刻,06时刻,12时刻,18时刻
            S1(30:31)=num2str(j,'%0.2d');%更新时刻
            for k=1:mndays
                S1(28:29)=num2str(k,'%0.2d');
                A=load(S1);
                index=find(hlow<A(:,1)&A(:,1)<hhigh);%找到高度向量中hlow~hhigh范围的所有高度的下标    
                vecArray=A(index,2).*cosd(A(index,3));%hlow~hhigh范围的南北风向风速向量
                vec=mean(vecArray);%该时刻19公里附近的南北风向平均风速
                vecmonth=[vecmonth vec];
                if vec>0
                    daynorth=daynorth+1;
                else
                    daysouth=daysouth+1;
                end
            end
            vecnthmon=vecmonth(find(vecmonth>0));%该月北风平均风速数组
            vecsthmon=vecmonth(find(vecmonth<=0));%该月南风平均风速数组
            table(i*4+j/6+1,1)=daysouth;%该月南风天数
            table(i*4+j/6+1,2)=daynorth;%该月北风天数
            table(i*4+j/6+1,3)=mean(vecsthmon);%该月南风平均风速
            table(i*4+j/6+1,4)=mean(vecnthmon);%该月北风平均风速
            table(i*4+j/6+1,5)=std(vecsthmon);%该月南风风速标准差
            table(i*4+j/6+1,6)=std(vecnthmon);%该月北风风速标准差
            table(i*4+j/6+1,7)=mean(vecmonth);%该月南北方向总平均风速
            table(i*4+j/6+1,8)=std(vecmonth);%该月南北方向风速标准差
            daynorth=0;
            daysouth=0;
            vecmonth=[];
        end
    end
    xlswrite('C.xls',table,'Sheet1','B2:I17');
    
    hlow=20500;
    hhigh=21500;
    for i=0:3%6到9月四个月
        if i==0|i==3 %6月份和9月份都是30天
            mndays=30;
        else
            mndays=31;%7月份和8月份都是31天
        end
        S1(26:27)=num2str(i+6,'%0.2d');%更新月份
        for j=0:6:18%00时刻,06时刻,12时刻,18时刻
            S1(30:31)=num2str(j,'%0.2d');%更新时刻
            for k=1:mndays
                S1(28:29)=num2str(k,'%0.2d');
                A=load(S1);
                index=find(hlow<A(:,1)&A(:,1)<hhigh);%找到高度向量中hlow~hhigh范围的所有高度的下标    
                vecArray=A(index,2).*cosd(A(index,3));%hlow~hhigh范围的南北风向风速向量
                vec=mean(vecArray);%该时刻19公里附近的南北风向平均风速
                vecmonth=[vecmonth vec];
                if vec>0
                    daynorth=daynorth+1;
                else
                    daysouth=daysouth+1;
                end
            end
            vecnthmon=vecmonth(find(vecmonth>0));%该月北风平均风速数组
            vecsthmon=vecmonth(find(vecmonth<=0));%该月南风平均风速数组
            table(i*4+j/6+1,1)=daysouth;%该月南风天数
            table(i*4+j/6+1,2)=daynorth;%该月北风天数
            table(i*4+j/6+1,3)=mean(vecsthmon);%该月南风平均风速
            table(i*4+j/6+1,4)=mean(vecnthmon);%该月北风平均风速
            table(i*4+j/6+1,5)=std(vecsthmon);%该月南风风速标准差
            table(i*4+j/6+1,6)=std(vecnthmon);%该月北风风速标准差
            table(i*4+j/6+1,7)=mean(vecmonth);%该月南北方向总平均风速
            table(i*4+j/6+1,8)=std(vecmonth);%该月南北方向风速标准差
            daynorth=0;
            daysouth=0;
            vecmonth=[];
        end
    end
    xlswrite('C.xls',table,'Sheet1','B19:I34');
    风速原始数据文件列表如图:

    运行MATLAB程序即可自动将结果写到EXCEL文档里。


    展开全文
  • 最近在做一个点云的林业参数提取,用到了shp冠层数据,使用Arcgis似乎不太方便计算多种参数,因此学习了matlab读取shp数据,显示并且增加字段的方法。 SHP数据的读取 matlab2019b存在shaperead函数,可以读取shp...

    最近在做一个点云的林业参数提取,用到了shp冠层数据,使用Arcgis似乎不太方便计算多种参数,因此学习了matlab读取shp数据,显示并且增加字段的方法。

    SHP数据的读取

    matlab2019b存在 shaperead 函数,可以读取shp数据。

    其中帮助文档如下:

    S = shaperead(filename)

    S = shaperead(filename, Name, Value)

    [S,A] = shaperead(      )


    S 中储存了shp数据的形状以及边界信息,如:读取一个面状shp,其情况如下:

     

     A 中存储了shp数据的属性表

    如果不是[S, A]输出,则shp的属性表会叠加在S中 


     SHP数据的信息读取

    shapeinfo可以读取shp数据的信息。

    info = shapeinfo(filename) 

     

    但是似乎没有坐标系的信息。

    SHP数据的显示

     使用geoshow可以显示shp数据

     由于geoshow的用法很多,这里不做过多的演示,直接使用:

    s = shaperead('xx.shp');
    geoshow(s)

    SHP数据保存

    shapewrite函数可以保存shp数据

    shapewrite(S,filename)
    shapewrite(S,filename,'DbfSpec',dbfspec)

    如果是添加字段的话,shp读取读取出来是有一点像是table的struct格式,无法直接按照字段添加,因此,需要先将读取的S转换成table,为表格添加字段,再将表格转换为struct,进行保存。

    下面是代码示列:

    % 读取shp数据
    s = shaperead('xx.shp');
    % 转换成table格式
    s = struct2table(s);
    % 组织要添加的字段
    % a,b,c为和shp数据一样多的字段数据
    filed = table(a,b,c);
    % 为shp补充字段
    s = [s,filed];
    % 转换为struct格式
    s = table2struct(s);
    % 保存shp
    shapewrite(s,'s.shp')

    接下来在gis中打开保存的shp就可以了

    展开全文
  • Matlab读取图像数据并写入TXT

    千次阅读 2019-06-03 14:09:44
    我最近在做嵌入式图像处理,我的任务是:首先要把一幅图像读入matlab,获取每个像素点的灰度值,然后分别在TXT文件中以二进制、十进制和十六进制的数值显示出来。 ...由于图像数据太大,所以先...
  • matlab读取表格,并统计成绩,得出最高分,平均分,和中间的成绩
  • MATLAB读取Execl数据并绘制曲线图

    千次阅读 2019-12-05 14:36:41
    set(gca,'XTickLabel',{'aero','bird','bike','boat','bottle','bus','car','cat','chair','cow','table','dog','horse','mbike','person','plant','sheep','sofa','train','tv','mAP'}) hold on plot(cls,SPPNet,'...
  • 每年全国大学生数学建模竞赛都有不少是excel数据,怎么把数据导入Matlab就成了首先要解决的问题,Matlab自带那个函数不怎么好用,现在这个名为ReadFromExcel的函数很好的解决了这个问题,支持中文和混合数据,有例子...
  • 为什么需要table数据结构 通过导入数据构造table对象 调用table构造函数来构造table对象 通过转换函数构造table对象 访问table中的数据 MATLAB常用基本数据类型有:整型,浮点型...
  • Matlab如何利用table数据进行绘图

    千次阅读 2021-04-06 09:09:31
    Matlab如何通过导入Excel表格的数据进行绘图的教程已经有很多了,而且很详细了,但是如何利用table类型的数据进行绘图的教程却很少,所以这里我就结合我查找的资料以及自己的不断尝试给大家总结一下如何利用table...
  • Matlab非常适合数据选择(Matlab uitable data selection)我有从AScii文件中读取数据的Uitable。我想使用鼠标选择列,也使用复选框。 我尝试了很多,但我无法弄清楚如何使用鼠标选择合适的列并获取该数据。此外,我...
  • 这时候要检查读取的文件对应的数据内容是否匹配,如果不匹配,那么从不匹配那里开始,内容全部为NaN。 我在处理一种文件时,没看到格式不同,才遇到此类问题。 data1 = textscan(fid1, '%s %n %n %n %n %n %n %n'...
  • 正月里都是年,先给大家云拜年,祝大家在新的一年里身体健康,事业有成,家庭幸福1、Table来源在...为了能方便高效的处理工程数据MATLAB提出了一种新的数据类型“TableTable 数据类型是一种高级数据结构,它是...
  • clc;clear all;[numeric_data text_data rawdata] = xlsread('aaa.xls');headings = rawdata(1,:) % get headings fromfirst row�ta = cell2mat(rawdata(2:end,:)) % get numericdata from row 2 to ...读取Excel文...
  • 平时习惯将数据输出为xlsx文件,但也有不少时候需要输出为csv,之前读取csv文件还是先使用bat程序将文件后缀改为txt,然后再进行读取。如果数据只是简单地全部都是数字,那么csvwrite和csvread即可满足,但当数据中...
  • 利用pandas读取一般在做数据分析时最常接触的就是逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件...
  • MATLAB常见的读取加载数据文件都是用load 、importdata之类比较多,该类方法多局限于文件数据每一行的列数都是相等的; 但是如果遇到的数据文件前面N行数据是英文或中文,剩下的是列数相等的数据,那这类导入方法...
  • -----------2018年4月24日更新线----------------------------------...看来这两年MATLAB的进步还是很大的.1 比如上次提到的数据清洗.MATLABtable数据格式, 相当于pandas的dataframe, 功能类似于pandas.2 比如上次...
  • matlab读取excel表格

    2018-08-02 13:36:13
    可以通过matlab读取excel表格并画图,可以索引至第n列,功能易实现,可验证
  • 现总结几个现在用到的IDL读写数据的函数,随着学习和使用的深入逐步补充和完善。IDL在读写格式化数据方面有两种格式化文件之区分:自由文件格式和确定的文件格式。格式化文件有时叫做ASCII 文件或者纯文本文件。自由...
  • MATLAB中新增了一个table类型,可以很方便的读取文件中的数据,在使用这个格式的...%读取table类型的数据,访问csv文件中的第8列 y2 = T{:, 9}; y3 = T{:, 10}; y4 = T{:, 7}; x = T{:, 1}; yyaxis left; % 激活左边
  • 从.xls类型文件中读取数据在写机器学习算法的时候从UCI下载了一些数据,但是格式不是csv,而是.txt/.data,可以先用excel打开数据,在excel中将数据进行分列后导入python进行操作.这里说说如何在python中进行简单的....
  • matlab 读取MIT-BIH 数据

    千次阅读 2019-06-08 22:00:13
    %------ 读取 ECG 信号二值数据 ---------------------------------------------- % if dformat~= [212,212], error('this script does not apply binary formats different to 212.'); end; signald= fullfile(PATH...
  • pivot_tableMatlab数据透视表介绍 此函数计算数据透视表(类似于在 Excel、R 或 Pandas (python) 中从 matlab 表中创建的数据透视表。换句话说,in 能够通过将大型数据集聚合到组中,然后应用函数来对其进行...
  • matlab读取excel文件

    万次阅读 2018-08-19 15:38:11
    最近在用matlab处理采集到的数据,这些数据都是按照一定的格式存入excel文件中的,每天对应产生一个文件。这些表格数量较多,所以通过matlab进行批量读取和处理。 在读取过程最重要的函数是xlsread函数,使用该函数...
  • 用readtable()函数可读取csv文件为table summary()函数可查看table的信息 EPL = readtable('EPLresults.csv') summary(EPL) 创建table 1.创建一个名为teamWins的table,包含team和w列 teamWins = table(team,w) ...
  • 读取txt文件方式1(缺点:文件名固定): 使用magnify.m小工具获取局部图形(附件有... %要读取的txt文件名(两列数据)delimiter = '\t';formatSpec = '%f%f%[^\n\r]';%读取2列的格式fileID = fopen(filename,'r');data
  • MATLAB 高级数据类型 table

    千次阅读 2020-03-07 23:24:38
    table数据类型使用来取代statistics toolbox中的dataset的,可以生成带有表头的表格数据。
  • Matlabtable类型介绍

    千次阅读 2020-08-05 15:00:59
    Matlab中,table类型类似R语言dataframe。发现网上没有太多介绍,由于我要做完整的数据处理工作,这个类型是自己比较熟悉的,所以准备扒一遍教程和各种资料。 table读取: readtable('abc.csv') table构造: %...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,996
精华内容 798
关键字:

matlab读取table数据

matlab 订阅