本文摘要(由AI生成):
本文首先介绍了使用Matlab向Excel写入数据的基本方法,然后通过实例展示了如何调整题头显示和合并单元格。针对写入多列数据时的问题,文章提出了一种有效的解决方案,即通过创建一个大矩阵,并指定写入数据的起始列,从而实现了多列数据的完美衔接。此外,文章还提到了如何存储和写入包含特殊符号的题头数据。最后,作者分享了在实际应用中不断学习和探索Matlab深层次知识的经历,鼓励读者在应用中发现问题并寻找解决办法。
Matlab导入Excel数据技巧
过冷水近期在工作需要将Matlab计算结果自动输入到Excel中,已知导入函数语句为:
xlswrite(filename,A,sheet,xlRange) %将数据写入指定的工作表和范围。
实际操作中遇到了以下两个问题。
1表格中的每列数据不是一次计算出来的,每做一次计算按照排序往下一列写入数据,一次只写入一列数据,通常程序写入Y列数据对应程序为:
xlswrite(filename,A,sheet,Y3:Y18) %将数据写入指定的工作表和范围。
再写入一次则是:
xlswrite(filename,A,sheet,Z3:Z18)
每次写入的时候需要更改数据范围语句进行更改,这就相当于一个半自动化程序,在应用中过冷水就觉得好烦,能不能实现每次运行自动将写入范围改到下一列。
已知A~Z有明显字母序列,可 Matlab无法识别字母序,它不知道A后面应该是B,B后面是C,只能识别1、2、3、4、5
1 Excel中表头有各种字符,实际也是需要Matlab进行写入的,总不能只用Matlab写入数据,然后再自己打开 Excel进行表头添加吧!也太不智能化了。可是怎么实现Matlab往Excel中写入字符串?甚至大多数人都不会在Matlab中输入特殊字符(希腊字符):ε。本期过冷说详细告诉大家如何解决上述两个问题,更智能化写入数据。
过冷水在推文matlab不同类型数据互换实例有和大家分享不同数据类型之间互换关系
图中详细给出了各种数据类型之间的相互转换关系,其中需要注意字符串表达式↔ASCII码,我们的问题就需要其解决
ASCII:在计算机中,所有的数据在存储和运算时都要使用二进制数表示,像a、b、c、d这样的52个字母以及0、1等数字还有一些常用的符号,美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示
通俗一点讲,ASCII码实现了数值和字符之间联系,我们熟悉的是十进制,已知:二进制↔十进制;二进制↔字符串,自然:二进制↔字符串,过冷水整理出大家比较常用到的字符和数值之间的对应关系表,方便大家查找翻阅。
十进制 | 字符 | 十进制 | 字符 | 十进制 | 字符 | 十进制 | 字符 | 十进制 | 字符 |
50 | '0' | 67 | 'A' | 99 | a' | 947 | α' | 40 | & |
51 | '1' | 68 | 'B' | 100 | b' | 948 | β' | 39 | % |
52 | '2' | 69 | 'C' | 101 | c' | 949 | γ' | 38 | $' |
53 | '3' | 70 | 'D' | 102 | d' | 950 | δ' | 35 | !' |
54 | '4' | 71 | 'E' | 103 | e' | 951 | ε' | 165 | £' |
55 | '5' | 72 | 'F' | 104 | f' | 952 | ζ' | 183 | µ' |
56 | '6' | 73 | 'G' | 105 | g' | 953 | η' | 402 | Ɛ' |
57 | '7' | 74 | 'H' | 106 | h' | 954 | θ' | 403 | Ƒ' |
58 | '8' | 75 | 'I' | 107 | i' | 955 | ι' | 404 | ƒ' |
59 | '9' | 76 | 'J' | 108 | j' | 956 | κ' | 408 | Ɩ' |
42 | (' | 77 | 'K' | 109 | k' | 957 | λ' | 416 | ƞ' |
43 | )' | 78 | 'L' | 110 | l' | 958 | μ' | 427 | Ʃ' |
44 | *' | 79 | 'M' | 111 | m' | 959 | ν' | 435 | Ʊ' |
45 | ' | 80 | 'N' | 112 | n' | 960 | ξ' | 634 | ɸ' |
49 | /' | 81 | 'O' | 113 | o' | 961 | ο' | 933 | Σ' |
63 | =' | 82 | 'P' | 114 | p' | 962 | π' | 934 | Τ' |
93 | [' | 83 | 'Q' | 115 | q' | 963 | ρ' | 935 | Υ' |
94 | \' | 84 | 'R' | 116 | r' | 964 | ς' | 936 | Φ' |
95 | ]' | 85 | 'S' | 117 | s' | 965 | σ' | 937 | Χ' |
96 | ^' | 86 | 'T' | 118 | t' | 966 | τ' | 938 | Ψ' |
125 | {' | 87 | 'U' | 119 | u' | 967 | υ' | 939 | Ω' |
126 | |' | 88 | 'V' | 120 | v' | 968 | φ' | ||
127 | }' | 89 | 'W' | 121 | w' | 969 | χ' | ||
128 | ~' | 90 | 'X' | 122 | x' | 970 | ψ' | ||
179 | ±' | 91 | 'Y' | 123 | y' | 971 | ω' | ||
92 | 'Z' | 124 | z' |
利用该表结合数据类型转化函数
double('A') char(67) ans = 65 ans = 'C'
这样就可以实现表格写入范围自动变化了
n=n 1 [char(n),'4',':',char(n),'19'] n = 66 ans = 'B4:B19'
完美!同时表格也给出了特殊字符对应的转换数值,所以需要在Matlab中打入某个特殊字符的时候就可以使用char(r)这个方法在Matlab绘图时候以及赋予变量的时候特别有用。
甚至可以用使用该转化关系输入函数比如“过冷水”数对应的数值为:
double('过冷水') ans = 36807 20919 27700 char([ 36807,20919,27700]) ans = '过冷水'
过冷水实例给大家演示下表中的数据该如何导入。为了方便在这里我所有数据放在一个矩阵中,通过写循环模拟不同运算数据依次写入的过程
A=[8.24 8.24 8.24 8.24 8.24 8.24 5.29 5.29 5.29 5.29 5.29 5.29 2.27 2.27 2.27 2.27 2.27 2.27 4.32 4.32 4.32 4.32 4.32 4.32 893.12 893.12 893.12 893.12 893.12 893.12 245.52 245.52 245.52 245.52 245.52 245.52 245.52 245.52 245.52 245.52 245.52 245.52 200.63 200.63 200.63 200.63 200.63 200.63 0.27 0.27 0.27 0.27 0.27 0.27 1.22 1.22 1.22 1.22 1.22 1.22 4.45 4.45 4.45 4.45 4.45 4.45 1.41 1.41 1.41 1.41 1.41 1.41 1.41 1.41 1.41 1.41 1.41 1.41 3.57 3.57 3.57 3.57 3.57 3.57 -3.04 -3.04 -3.04 -3.04 -3.04 -3.04 -2.15 -2.15 -2.15 -2.15 -2.15 -2.15 ]; for i=1:6 xlswrite('导入数据.xls',A(:,i),'Sheet1',[char(68 i),'3',':',char(68 i),'18']) ; end str={'A11';'A12';'A21';'A22';'B11';'B12';'B21';'B22';'B12/B11';'B21/B22';[char(949),'11'];[char(949),'12'];[char(949),'21'];[char(949),'22'];[char(949),'12','-',char(949),'11'];[char(949),'21','-',char(949),'22']}; xlswrite('导入数据.xls',str,'Sheet1','D3:D18') ; B=double('Matlab导入Excel数据技巧');%反向生成数据 str1={char(B)}; xlswrite('导入数据.xls',str1,'Sheet1','D2:G2') ;
基本完美!可是题头稍微有点问题,本意是D2:J2只显示一个题头,可是现在是每个表格同输入了一次,可以理解为,没有做合并,所以如果能够用Matlab控制单元格合并就完美了,过冷水,通过查找,用Matlab控制Excel合并单元格的方法程序为:
a= actxserver('Excel.Application'); b = a.Workbooks.Open('C:\Users\wayne\Desktop\导入数据.xls'); b.Worksheets.Item(1).Name = 'Sheet1'; b.Worksheets.Item(1).Range('D2:J2').MergeCells=1; b.Save b.Close(false) a.Quit
完美的实现了我们的需求。解决了一个问题现在解决另外一个问在写入数据的时候如何实现Z列和AA,AZ,BA列完美衔接?过冷水想到了这么一个办法将我们要写入的数据当做一个大矩阵,写入数据列数>26,但是我们只指定写入数据开头,意思就是只指定矩阵中第一列应该写入表格中的第几行,然后依次填入即可
A=rand(5,40) xlswrite('导入数据.xls',A,'Sheet1','N3')
如图所示这样就实现了多列数据写入的问题,真对过冷水的问题,过冷水可以先将计算结果储存成矩阵,最后一次将数据写入Excel中即可。
在日常中过冷水也是一遍应用Matlab一遍学习更深层的知识,本期给大家分享的技巧也是过冷水是实际应用中发现写入数据存在问题,不能很好衔接,以及题头的特殊符号有没有办法也写入,然后就查找资料,看有什么解决的办法。本期过冷水要和大家分享的Matlab方面知识就这么多,希望大家喜欢。