我是靠谱客的博主 时尚万宝路,最近开发中收集的这篇文章主要介绍matlab将几个字符串组保存在txt,matlab中字符串分割以及将工作区的变量写入txt文本中...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一 字符串分割

matlab中最常用的字符串分割函数有两个,都比较好用,分别是strsplit和strtok。

1 strsplit

假设需要分割的字符串为str,直接使用 strsplit(str) 就可以分割,默认按空白字符分割,分割后的字符组成元胞数组。

>> str = ‘hello world, I am a student!‘

str =

hello world, I am a student!

>> s = strsplit(str);

>> s

s =

1×6 cell 数组

‘hello‘ ‘world,‘ ‘I‘ ‘am‘ ‘a‘ ‘student!‘

>> s{1,1}

ans =

hello

>> s{1,2}

ans =

world,

>>

strsplit的第二个参数可以是分割字符,比如用‘,‘或者‘.‘或者‘-‘等进行字符串的分割,第二个参数甚至可以是包含多个分割字符的元胞数组,如下

>> str = ‘With,the,development,of,society.people-have-higher-requirements-for-image-quality‘

str =

With,the,development,of,society.people-have-higher-requirements-for-image-quality

>> s1 = strsplit(str,‘,‘)

s1 =

1×5 cell 数组

‘With‘ ‘the‘ ‘development‘ ‘of‘ ‘society.people-have-…‘

>> s1{1,5}

ans =

society.people-have-higher-requirements-for-image-quality

>> s2 = strsplit(str,‘-‘)

s2 =

1×7 cell 数组

‘With,the,developm…‘ ‘have‘ ‘higher‘ ‘requirements‘ ‘for‘ ‘image‘ ‘quality‘

>> s3 = strsplit(str,‘.‘)

s3 =

1×2 cell 数组

‘With,the,development,of,society‘ ‘people-have-higher-requirements-for-image-quality‘

>> s4 = strsplit(str,{‘,‘,‘.‘,‘-‘})

s4 =

1×12 cell 数组

1 至 11 列

‘With‘ ‘the‘ ‘development‘ ‘of‘ ‘society‘ ‘people‘ ‘have‘ ‘higher‘ ‘requirements‘ ‘for‘ ‘image‘

12 列

‘quality‘

>>

strsplit=最多可以有两个返回值,第二个返回值是匹配到的分割字符。

[s1,s2] = strsplit(str,‘.‘)

s1 =

1×2 cell 数组

‘With,the,development,of,society‘ ‘people-have-higher-requirements-for-image-quality‘

s2 =

cell

‘.‘

>> [s1,s2] = strsplit(str,‘,‘)

s1 =

1×5 cell 数组

‘With‘ ‘the‘ ‘development‘ ‘of‘ ‘society.people-have…‘

s2 =

1×4 cell 数组

‘,‘ ‘,‘ ‘,‘ ‘,‘

>> [s1,s2,s3] = strsplit(str,‘,‘)

错误使用 strsplit

输出参数太多。

strsplit还可以有参数‘DelimiterType‘,当值为‘RegularExpression‘时,将分隔字符串按照正则表达式理解。

>> str = ‘ab1cd2ef3gh4ij5kl6mn7.‘

str =

ab1cd2ef3gh4ij5kl6mn7.

>> s = strsplit(str,‘[0-9]‘,‘DelimiterType‘,‘RegularExpression‘)

s =

1×8 cell 数组

‘ab‘ ‘cd‘ ‘ef‘ ‘gh‘ ‘ij‘ ‘kl‘ ‘mn‘ ‘.‘

>> [s1,s2] = strsplit(str,‘[0-9]‘,‘DelimiterType‘,‘RegularExpression‘)

s1 =

1×8 cell 数组

‘ab‘ ‘cd‘ ‘ef‘ ‘gh‘ ‘ij‘ ‘kl‘ ‘mn‘ ‘.‘

s2 =

1×7 cell 数组

‘1‘ ‘2‘ ‘3‘ ‘4‘ ‘5‘ ‘6‘ ‘7‘

>>

2 strtok函数

strtok一般只分成两部分,默认会在从头开始遇到的第一个空格/tab/换行符处断开,也可以指定分割字符。

>> str = ‘hello world, i am a student‘

str =

hello world, i am a student

>> s1 = strtok(str)

s1 =

hello

>> s2 = strtok(str,‘,‘)

s2 =

hello world

strtok可以有两个返回值,第一个是分割后的前一部分,第二个是分割后的剩余部分(包括分割字符)。

>> [s3 s4] = strtok(str)

s3 =

hello

s4 =

world, i am a student

>> [s3 s4] = strtok(str,‘,‘)

s3 =

hello world

s4 =

, i am a student

strtok的输入也可以是元胞数组,返回的两个返回值也是对应的元胞数组。

>> str = {‘hello world‘;‘good job‘}

str =

2×1 cell 数组

‘hello world‘

‘good job‘

>> [s1 s2] = strtok(str)

s1 =

2×1 cell 数组

‘hello‘

‘good‘

s2 =

2×1 cell 数组

‘ world‘

‘ job‘

>>

二 将工作区的变量写入txt文本中

这里指的是将mat中的矩阵按一定格式存入txt文本中,在数据处理中经常用到,直接粘贴复制的话比较麻烦而且未必满足格式,比如我有一个名为cov_prisparam的mat文件,是一个36*36的double矩阵。如下

20200114001531499080.png

我想要将其写入txt文件中,并且用逗号分割。如果直接用save存的话会出现乱码,save(‘li.txt‘,‘cov_prisparam‘)

20200114001532262781.png

查了一下才知道要加参数ascii,这样就可以了,save(‘li.txt‘,‘cov_prisparam‘,‘-ascii‘)

20200114001532621193.png

但是他的格式都被统一成科学计数法了,而且是文本形式,这样显然不方便数据的调用,后来查到一个非常好用的函数dlmwrite,dlmwrite(‘li.txt‘,cov_prisparam),默认分割符是逗号。

20200114001533061640.png

也可以指定其他分隔符,比如分号或者空格等,dlmwrite(‘li.txt‘,cov_prisparam,‘;‘)

20200114001533690570.png

原文:https://www.cnblogs.com/libai123456/p/12189808.html

最后

以上就是时尚万宝路为你收集整理的matlab将几个字符串组保存在txt,matlab中字符串分割以及将工作区的变量写入txt文本中...的全部内容,希望文章能够帮你解决matlab将几个字符串组保存在txt,matlab中字符串分割以及将工作区的变量写入txt文本中...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部