Matlab的struct与excel互转

您所在的位置:网站首页 如何把excel数据变成表格 Matlab的struct与excel互转

Matlab的struct与excel互转

2024-07-12 02:44| 来源: 网络整理| 查看: 265

Matlab的struct与excel互转 struct输出为excelstruct转为tabletable输出为excel多个table输出为excel的多个sheet(struct数组每个struct转化为一个table) excel输入为structEXCEL读取不同sheet为不同tabletable每个属性列读取为1*N的行向量excel的多个sheet转化为struct数组

struct输出为excel struct转为table 生成名为frag1的table,此时属性名为Var1,Var2,… frag1=table(fragment(1).id',fragment(1).phi',fragment(1).theta',fragment(1).velocity0',fragment(1).mass',fragment(1).k',fragment(1).x0',fragment(1).y0',fragment(1).z0',fragment(1).vx0',fragment(1).vy0',fragment(1).vz0',fragment(1).vector_x',fragment(1).vector_y',fragment(1).vector_z')

注意:转化为table时,table中的元素必须是列向量,如果A是1*N的行向量,记得A'将其转置为列向量。否则会报错“从单元格 'A1' 开始的数据块超出工作表边界 0 行和 12854 列。”

属性名指定 frag1.Properties.VariableNames = {'破片编号','方位角','仰角','破片初速度','破片质量','速度衰减系数','破片初始位置坐标-x','破片初始位置坐标-y','破片初始位置坐标-z','破片相对初速度-x','破片相对初速度-y','破片相对初速度-z','破片射迹线方向向量-x','破片射迹线方向向量-y','破片射迹线方向向量-z'}

注意:表头,注意要与table的变量数一致,不然会报错“对于表中的每个变量,VariableNames 属性必须包含一个名称。”

table输出为excel 输出为EXCEL writetable(frag1,'frag1.xlsx')

注意:要写入当前文件夹,请在 filename 中指定文件名。要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称,如:'C:\myFolder\myTextFile.csv'。

输出为EXCEL中的指定sheet writetable(frag1,'F:\frag1_1.xlsx','sheet',1) //写到指定sheet

注意:'sheet',1——1为所指定sheet数

多个table输出为excel的多个sheet(struct数组每个struct转化为一个table) struct数组有四个元素,转化为4个table,并转为EXCEL的四个 sheet //4类破片存到四个sheet for i=1:4 fragm = table(fragment(i).id',fragment(i).phi',fragment(i).theta',fragment(i).velocity0',fragment(i).mass',fragment(i).k',fragment(i).x0',fragment(i).y0',fragment(i).z0',fragment(i).vx0',fragment(i).vy0',fragment(i).vz0',fragment(i).vector_x',fragment(i).vector_y',fragment(i).vector_z'); fragm.Properties.VariableNames = {'破片编号','方位角','仰角','破片初速度','破片质量','速度衰减系数','破片初始位置坐标-x','破片初始位置坐标-y','破片初始位置坐标-z','破片相对初速度-x','破片相对初速度-y','破片相对初速度-z','破片射迹线方向向量-x','破片射迹线方向向量-y','破片射迹线方向向量-z'}; writetable(fragm,'F:\frag.xlsx','sheet',i) end

注意:通过i与第几个元素关联就输出到哪个sheet,来输出到指定路径文件的指定sheet。

excel输入为struct EXCEL读取不同sheet为不同table 使用readtable读取excel的某个sheet为table for i=1:4 fragm = readtable('F:\frag_4.xlsx','sheet',i,'ReadVariableNames',false); end

注意:因为属性名是中文,所以不能读取其作为变量名,使用'ReadVariableNames',false来读取,属性名为Var1,Var2,...

table每个属性列读取为1*N的行向量 取table的某列 fragm.Var1

注意:取出的某列为N*1的列向量,如果要当数组处理要将其转化为行向量

取table某列为行向量,赋值给struct对象的某个属性 fra(i).id = fragm.Var1';

注意:'sheet',1——1为所指定sheet数

excel的多个sheet转化为struct数组 完整实例 for i=1:4 fragm = readtable('F:\frag_4.xlsx','sheet',i,'ReadVariableNames',false); fra(i).id = fragm.Var1'; fra(i).phi = fragm.Var2'; fra(i).theta= fragm.Var3'; fra(i).velocity0= fragm.Var4'; fra(i).mass= fragm.Var5'; fra(i).k= fragm.Var6'; fra(i).x0= fragm.Var7'; fra(i).y0= fragm.Var8'; fra(i).z0= fragm.Var9'; fra(i).vx0= fragm.Var10'; fra(i).vy0= fragm.Var11'; fra(i).vz0= fragm.Var12'; fra(i).vector_x= fragm.Var13'; fra(i).vector_y= fragm.Var14'; fra(i).vector_z= fragm.Var15'; end

注意:综合前面的方法,即可得到此。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3