使用Matlab处理字符串及文本时,需要与正则表达式打交道。正则表达式是一个非常重要的编程概念,主流的编程语言都对正则表达式进行了很好的支持,Matlab也不例外。
本期推文就让我们来总结一下Matlab提供的正则表达式吧!
1 引言
正则表达式(Regular Expression),又称规则表达式,本质上是一串字符,它定义了某种字符串模式,通常被用来检索、替换那些符合某个模式(规则)的文本。
Matlab 提供的正则表达式库函数主要有三个:
(1) regexp---用于对字符串进行查找,大小写敏感;
(2) regexpi---用于对字符串进行查找,大小写不敏感;
(3) regexprep---用于对字符串进行查找并替换。
下面主要介绍一下 regexp 这个函数的主要用法:
用法1:
[startIndex, endIndex] = regexp(str, expression) 返回所有匹配项的开始和结束索引。
用法2:
out = regexp(str, expression, outkey) 返回 outkey 指定的输出。例如,如果 outkey 为 'match',则 regexp 返回与该表达式匹配的子字符串而非其开始索引。outkey通常的取值有:
输出关键字返回
start 默认值所有匹配项的开始,startIndex
end所有匹配项的结束,endIndex
tokenExtents所有表文的开始和结束索引,和tokens一起用,指示出现tokens的位置
match与 expression 中的模式匹配的每个子字符串的文本
tokensstr 中每个捕获的标文的文本,即表达式中标记(tokens)的字串
names为匹配到的命名标记的标记名
splitstr 的非匹配子字符串的文本
用法3:
[out1, ..., outN] = regexp(str, expression, outkey1, ..., outkeyN) 按指定的顺序返回多个输出关键字指定的输出。例如,如果指定 match、tokens,则 regexp 返回与整个表达式匹配的子字符串以及与部分表达式匹配的标文。
用法4:
___ = regexp(___, option1, ..., optionM)使用指定的选项标志 修改搜索。例如,指定 'ignorecase' 以执行不区分大小写的匹配。可以包括任何输入并请求之前语法中的任何输出。
option - 搜索选项覆盖说明
allonce尽可能多次地匹配表达式(默认值),或仅匹配一次。
nowarningswarnings取消警告(默认值),或显示警告。
matchcaseignocase匹配字母大小写(默认值),或忽略大小写。
noemptymatchemptymatch忽略零长度匹配项(默认值),或包括这些匹配项。
dotalldotexceptnewline将点与任意字符匹配(默认值),或与除换行符 (\n) 之外的所有字符匹配.
stringanchorslineanchors将 ^ 和 $ 元字符应用于字符向量的开头和结尾(默认值),或应用于行开头和结尾。换行符 (\n) 指定行的结尾。行的开头指定为第一个字符,或紧跟在换行符后面的任何字符。
literalspacingfreespacing在匹配时包括空格字符和注释(默认值),或忽略它们。借助 freespacing,使用 '\ ' 和 '#' 匹配空格和 # 字符。
用法5:
___ = regexp(___, 'forceCellOutput')以标量元胞的形式返回每个输出参数。元胞包含被描述为上述语法输出的数值数组或子字符串。可以包括任何输入并请求之前语法中的任何输出。
2 单个字符匹配
正则表达式,指定为字符向量、字符向量元胞数组或字符串数组。
每个表达式可包含字符、元字符、运算符、标文和用于指定在 str 中匹配的模式的标志。
2.1 元字符
元字符表示字母、字母范围、数字和空格字符。使用它们来构造广义的字符模式。
. 匹配任何单个字符,包括空格和换行符。例..ain 与以 ain 结尾的五个连续字符序列匹配。
[] 匹配括号内的任意字符,$, |, ., *, +, ?, -这些字符按字面匹配。例[rp.]ain'与 rain、pain 或 .ain'匹配。
[^] 匹配除括号内字符的其它任意字符。例[^*rp]ain 与以 ain结尾的所有由四个字母组成的序列(rain、pain'和 *ain 除外)匹配。如,它与 gain、lain 或 vain匹配。
[a-b] 匹配a-b范围中的任意字符,如[a-z], A-Z, [0-9], A-y, [10-99]。
\w 匹配任意英文字母、数字、下划线,等价于 [a-z_A-Z0-9]或 [a-zA-Z_0-9]。例 \w*标识一个单词。
\W 匹配任意非英文字母、数字、下划线,等价于 [^a-zA-Z_0-9]。例 \W*标识非单词项。
\s 匹配任意非空白(空格)字符,等价于 [\f\n\r\t\v]。 如 \w*n\s 与以字母 n 结尾且后跟空白字符的单词匹配。
注: 字符表示
运算符
\a警报(蜂鸣)
\b退格符
\f换页符
\n换行符
\r回车符
\t水平制表符
\v垂直制表符
\S 匹配任意非空白字符,等价于 [^ \f\n\r\t\v]。例 \d\S 与数字(后跟任意非空白字符)匹配。
\d 匹配任意数字,等价于 [0-9]。例 \d* 与任意数量的连续数字匹配。
\D 匹配任意非数字,等价于 [^0-9]。例 \w*\D\> 与不以数字结尾的单词匹配。
oN或\o{N} 匹配八进制数N对应的Unicode字符。例 \o{40} 与八进制 40 定义的空格字符匹配。
xN或\x{N} 匹配十六进制数N对应的Unicode字符。例 \x2C 与十六进制 2C 定义的逗号字符匹配,[\x4e00-\x9fa5] 匹配任意汉字。
2.2 特殊字符
\char 匹配表达式中的特殊字符,进行转义。$,^,*,(,),+,=,{,},<,>,|,.,\,?, -。这些特殊字符前边加上 \ 将会对其转义,使得匹配他们的字面值。
3 字符串匹配
3.1 多次匹配
元字符及其特殊字符的匹配,每次只能匹配一个字符,如果需要匹配多个字符,即字符串的匹配,那么就要重复好几次元字符的表达式。
比如,匹配 mmm,那么就可以用正则表达式 mmm, 但还有一种更简单的表示法 m{3}。其中 {}表示匹配前面的表达式出现的次数,称为限定符,m{2, 3} 匹配 mm 和 mmm。
除了 {} 限定符,还有其他常用的一些限定符,描述如下:
expr* 与expr匹配的元素出现0或更多次,相当于{0, }。例 \w*与任意长度的单词匹配。
expr? 与expr匹配的元素出现0或1次,相当于{0, 1}。例 \w*(\.m)? 与单词或以扩展名 .m 结尾(此条件为可选条件)的单词匹配。
expr+ 与expr匹配的元素出现1或更多次,相当于{1, }。例 与 HTML 标记匹配(当文件名包含一个或多个字符时)。
expr{n} 与expr匹配的元素出现n次,相当于{n, n}。 例 \d{4} 与四个连续数字匹配。
expr{n, m} 与expr匹配的元素至少出现n次但不多于m次 。例 \S{4,8} 与四到八个非空白字符匹配。
expr{n, } 与expr匹配的元素至少出现n次。 例 '与 HTML 标记匹配(当文件名包含一个或多个字符时)。
假设我们要在文本中搜索美国的社会安全号码,号码的格式是 000-00-0000,那么匹配它的正则表达式可以写为 \d{3}\-\d{2}\-\d{4}。 注意到 - 是特殊字符,所以用 \- 进行了转义。
如果希望字符号码连续出现,如000000000,也可以不出现,即 000-00-0000。上面两种形式都属于正确的格式,这时可以在字符 - 后面加上数量限定符 ? ,因此表达式可改写为 \d{3}\-?\d{2}\-?\d{4}\-?。
另外,当我们使用 expr*时,Matlab 将尽可能的匹配最长的字符字串,如
s='
xyz';
regexp(s,'<.*>','match')
输出:
{'
'}
如果我们希望匹配尽可能短的字符字串时,可以在上面使用的表达式后加个 ?, 即 .*?,如
s='
xyz';
regexp(s,'<.*?>','match')
输出:
{'
'} {''} {''} {' '}
上面的例子说明了对限定符的一种显示模式之一。
下面具体说明限定符的三种模式——限定修饰符,简单起见,用 q 表示上述6个限定符中的任意一个。
expr q 积极表达式:与尽可能多的字符匹配。如给定文本
text
,表达式 ?t.*> 匹配介于 之间的所有字符。
expr q? 消极表达式:与所需的尽可能少的字符匹配。如文本
text
,表达式 ?t.*?> 在第一次出现右尖括号 (>) 时结束每个匹配项:{''} {''} {' '}。
expr q+ 主动表达式:最大程度地匹配,但不重新扫描文本的任何部分。如给定文本
text
,表达式 ?t.*+>不返回任何匹配项,这是因为右尖括号是使用 .* 捕获的且不进行重新扫描。
3.2 零宽断言/环顾断言(左顾右盼)——利用上下文匹配
利用上下文匹配可以说非常常用,比如想要提取一段文本中特定的部分内容,那么零宽断言就非常适合干这类事情。
零宽断言查找紧邻预期匹配项前后但并非该匹配项一部分的模式。
指针停留在当前位置,并且将放弃或不捕获对应于 test 表达式的字符。因此,前向断言可匹配重叠字符组。
在介绍零宽断言之前,先介绍下定位点。表达式中的定位点与文本或单词的开头或结尾匹配。
^expr 匹配以expr开头的字符串。如 ^M\w* 与以 M 作为文本开头的单词匹配。
expr$ 匹配以expr结尾的字符串。如 '\w*m$ ' 与以 m 作为文本结尾的单词匹配。
\
expr\> 匹配以expr结尾的英文单词。如 \w*e\> 与以 e 结尾的任何单词匹配。
回过头来,下面我们介绍零宽断言
expr(?=test) 先行断言:向前查找与test匹配的字符。即匹配后面跟的字符是test的字符。如 \w*(?=ing) 匹配后跟 ing 的词汇,匹配输入文本 Flying, not falling. 中的 Fly和 fall。特殊情况:expr(?=$)等价于expr$和 expr(?=\>) 等价于 expr\>。
expr(?!test) 负向先行断言:向前查找与test不匹配的字符。即匹配后面跟的字符不是test的字符。如 i(?!ng) 匹配字母 i 的后面不跟 ng 的字符。
(?<=test)expr 后发断言:向后查找与 test 匹配的字符。即匹配前面的字符有test的字符。如 (?<=re)\w* 匹配紧跟 re 的词汇,例如输入文本 renew, reuse, recycle 中的 new、use和 cycle。特殊情况:(?<=^)expr等价于 ^expr和 (?<=\<)expr等价于 \
(?
实际应用中,可以通过组合上面4中断言进行文本内容的提取,比如我们想要提取'' 文本中的网址,那么可以同时使用先行和后发断言,“左顾右盼”来提取网址内容:
s='';
regexp(s,'(?<=)','match')
输出:
{'www.baidu.com'}。
3.3 逻辑条件匹配
如果我们在表达式之前指定先行断言,即(?=test)expr等,则运算等同于逻辑 AND。这一点比较容易混淆。
(?=test)expr 同时与 test 和 expr 匹配。如 (?=[a-z])[^aeiou] 与辅音匹配。
(?!test)expr 匹配 expr,但不匹配 test。如 (?![aeiou])[a-z] 与辅音匹配。
逻辑和条件运算符允许我们测试给定条件的状态,然后使用结果确定哪个模式(如果有)与下一条件匹配。这些运算符支持逻辑 OR、if 或 if/else 条件。
条件可以是标文、环顾运算符或 (?@cmd) 形式的动态表达式。动态表达式必须返回逻辑值或数值。
条件运算法:
expr1 | expr2 匹配表达式 expr1 或表达式 expr2。比如 (let|tel)\w+ 匹配以 let 或 tel 开头的单词。
(?(cond)expr) 如果条件 cond 为 true,则匹配 expr。如 (?(?@ispc)[A-Z]:\\) 匹配驱动器名称,例如 C:\(在 Windows® 系统上运行时)。
(?(cond)expr1 | expr2) 如果条件 cond 为 true,则匹配 expr1。否则,匹配 expr2。如 Mr(s?)\..*?(?(1)her|his) \w* 匹配包含 her 的文本(当文本以 Mrs 开头时),或包含 his 的文本(当文本以 Mr 开头时)。
4 标记(tokens)匹配
标记这部分是较难的一部分,但是使用得当可以实现非常强大的功能。
任何的正则表达式都可以用圆括号括起来作为一个标记。可以按标记在文本中的顺序引用该标记(顺序标记),或将名称分配给标记以便于代码维护和使输出更易于阅读。
(expr) 匹配expr并创建标记。如 Joh?n\s(\w*) 捕获一个标记,该标记包含名字为 John 或 Jon 的任何人的姓氏。
(?:expr) 匹配expr,不创建标记。
(?>expr) 匹配expr,不创建标记,不回溯扫描。
(expr1|expr2) 匹配expr1或者expr2,创建标记。
\N 匹配第N个标记,N从1开始。如 <(\w+).*>.*\1> 从文本
Some text 捕获 HTML 标记的标文,例如 title。
(?(N)expr1|expr2) 如果找到第 N 个标文,则匹配 expr1。否则,匹配 expr2。如 Mr(s?)\..*?(?(1)her|his) \w*匹配包含 her 的文本(当文本以 Mrs开头时),或包含 his的文本(当文本以 Mr 开头时)。
(?expr) 匹配 expr并创建命名为name的标记。 (?\d+)-(?\d+)-(?\d+) 在 mm-dd-yy 形式的输入日期中创建命名月、日和年标记。
\k 匹配名为name的标记。<(?\w+).*>.*\k>从文本 Some text 捕获 HTML 标记的标文,例如 title。
(?(name)expr1|expr2) 若存在名为name的标记,则匹配expr1,否则匹配expr2。如 Mr(?s?)\..*?(?(sex)her|his) \w* 匹配包含 her 的文本(当文本以 Mrs 开头时),或包含 his 的文本(当文本以 Mr 开头时)。
5 动态正则表达式
动态表达式允许我们执行 MATLAB 命令或正则表达式以确定要匹配的文本。
将动态表达式括起来的括号不 创建捕获组。
(??expr) 解析 expr 并将得到的项包括在匹配表达式中。解析后,expr 必须对应于完整的有效正则表达式。使用反斜杠转义字符 (\) 的动态表达式需要两个反斜杠:一个用于 expr 的初始解析,一个用于完整匹配。如 ^(\d+)((??\\w{$1})) 通过读取匹配项开头的数字确定匹配的字符数。(\w,\W,\d,\D,\s,\S,和\char这些在动态表达式中需要再加个\)。动态表达式括在另一组括号中,以便在标记中捕获生成的匹配项。例如,匹配 5XXXXX 将捕获 5 和 XXXXX 的标文。
(??@cmd) 执行 cmd 表示的 MATLAB 命令,并将该命令返回的输出包括在匹配表达式中。(.{2,}).?(??@fliplr($1)) 查找长度至少为四个字符的回文,例如 abba。
(?@cmd) 执行 cmd 表示的 MATLAB 命令,但放弃该命令返回的任何输出。(对诊断正则表达式有帮助。)\w*?(\w)(?@disp($1))\1\w* 匹配包括双字母(例如 pp)的单词并显示中间结果。
在动态表达式中,使用下列运算符定义替代文本。
替代运算符
$&或$0当前作为匹配项的输入文本部分,即获取匹配成功的字串。
$`获取匹配成功的字符串前面部分
$'紧随当前匹配项的输入文本部分(使用 $''表示$')
$N获取第N个标记
$获取名为name的标记
${cmd}在 MATLAB 执行命令 cmd 时返回的输出
注释:
(?#comment) 在正则表达式中插入注释。匹配输入时将忽略注释文本。如 (?# Initial digit)\<\d\w+ 包括一个注释,并匹配以一个数字开头的单词。
6 搜索标志
搜索标志修改匹配表达式的行为。在表达式中使用搜索标志的替代方法是传递 option 输入参数。
标志说明
(?-i)匹配字母大小写(regexp 和 regexprep 的默认值)。
(?i)不匹配字母大小写(regexpi 的默认值)。
(?s)将模式中的点 (.) 与任意字符匹配(默认值)。
(?-s)将模式中的点与并非换行符的任意字符匹配。
(?-m)匹配文本开头和结尾的 ^ 和 $ 元字符(默认值)。
(?m)匹配行开头和结尾的 ^ 和 $ 元字符。
(?-x)在匹配时包括空格字符和注释(默认值)。
(?x)在匹配时忽略空格字符和注释。使用 `\ ' 和 '#' 匹配空格和 # 字符。
该标志修改的表达式可显示在括号后,例如
(?i)\w*
或显示在括号内并使用冒号 (:) 与该标志分隔开,例如
(?i:\w*)
7 多行字符串与多正则表达式
7.1 多字符串与单个正则表达式匹配
多个字符串存在一个元胞数组里之后,每一个字符串与正则表达式匹配,返回值的维数与元胞数组的维数相同。
s= {'letter';'tell';'lethal';'television';'other'};
regexp(s,'(let|tel)\w+','match')
输出:
5x1的cell。
7.2 多个字符串与多个正则表达式匹配
这种情况下,应该满足字符串元胞数组中字符串的个数和正则表达式的个数相等,但维数不一定要相等。
如可以用 5x1的元胞数组与1x4的正则表达式相匹配。
s= {'letter';'tell';'lethal';'television';'other'};
expr= {'^t\w+?','\w+r?$','\?','l.*r?'};
regexp(s,expr,'match')
7.3 多字符串的替换
这个功能是在匹配的基础上,在表达式后面加入要替换的字符串即可。
s= {'letter';'tell';'lethal';'television';'other'};
s1=regexprep(s,'(.)\1','**','ignorecase');
输出:
8 结语
使用正则表达式的过程中,如果是每天与它打交道,也就很容易记住这些规则,孰能生巧,然而长时间不使用正则表达式,就会渐渐的生疏。
因此推文总结了正则表达式常用的用法和一些相关示例说明,没事干的时候就刷一刷,帮助记忆、理解。同时,希望能够帮助有相同需要的朋友。
参考文献
匹配正则表达式(区分大小写) - MATLAB regexp - MathWorks 中国
Matlab的正则表达式:字符串及文本处理的利器(上)
Matlab的正则表达式:字符串及文本处理的利器(下)
Luo H . MATLAB GUI设计学习手记 (第3版)[J]. 2014.
你可能感兴趣的:(Matlab 正则表达式)
基于社交网络算法优化的二维最大熵图像分割
智能算法研学社(Jack旭)
智能优化算法应用 图像分割 算法 php 开发语言
智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码文章目录智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码1.前言2.二维最大熵阈值分割原理3.基于社交网络优化的多阈值分割4.算法结果:5.参考文献:6.Matlab代码摘要:本文介绍基于最大熵的图像分割,并且应用社交网络算法进行阈值寻优。1.前言阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》htt
matlab mle 优化,MLE+: Matlab Toolbox for Integrated Modeling, Control and Optimization for Buildings...
Simon Zhong
matlab mle 优化
摘要:FollowingunilateralopticnervesectioninadultPVGhoodedrat,theaxonguidancecueephrin-A2isup-regulatedincaudalbutnotrostralsuperiorcolliculus(SC)andtheEphA5receptorisdown-regulatedinaxotomisedretinalgan
如何用matlab灵活控制feko的求解
NingrLi
matlab 开发语言
https://bbs.rfeda.cn/read.php?tid=3778Feko中的模型和求解设置等都可以通过editfeko进行设置,其文件存储为.pre文件,该文件可以用文本打开,因此,我们可以通过VB、VC、matlab等工具对.pre文件进行读写操作,以达到更灵活的使用feko。同样,对于.out文件,我们也可以进行读操作。熟练使用对.pre文件和.out文件的操作后,我们可以方便的计
matlab delsat = setdiff(1:69,unique(Eph(30,:))); 语句含义
黄卷青灯77
matlab 开发语言 setdiff
这行MATLAB代码用于计算在范围1:69中不包含在Eph矩阵第30行的唯一值集合中的所有元素。具体解释如下:delsat=setdiff(1:69,unique(Eph(30,:)));解释Eph(30,:)Eph(30,:)提取矩阵Eph的第30行的所有列元素。这是一个行向量,包含了第30行的所有值。unique(Eph(30,:))unique函数返回Eph(30,:)中的唯一元素。这意味着
python实现规则引擎_规则引擎python
weixin_39601511
python实现规则引擎
广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!我正在用python编写日志收集分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。它需要具有以下特点:正则表达式匹配消息本身消息严重性优先级的算术比较布尔运算符我设想一个例子规则可能是这样的:(message~program:messageandseverity>=h
Regular Expression 正则表达式
Aimyon_36
Data Development 正则表达式 redis 数据库
RegularExpression前言1.基本匹配2.元字符2.1点运算符.2.2字符集2.2.1否定字符集2.3重复次数2.3.1*号2.3.2+号2.3.3?号2.4{}号2.5(...)特征标群2.6|或运算符2.7转码特殊字符2.8锚点2.8.1^号2.8.2$号3.简写字符集4.零宽度断言(前后预查)4.1?=...正先行断言4.2?!...负先行断言4.3?Thefatcatsaton
Nginx从入门到实践(三)
听你讲故事啊
动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin
爬虫技术抓取网站数据
Bearjumpingcandy
爬虫
爬虫技术是一种自动化获取网站数据的技术,它可以模拟人类浏览器的行为,访问网页并提取所需的信息。以下是爬虫技术抓取网站数据的一般步骤:发起HTTP请求:爬虫首先会发送HTTP请求到目标网站,获取网页的内容。解析HTML:获取到网页内容后,爬虫会使用HTML解析器解析HTML代码,提取出需要的数据。数据提取:通过使用XPath、CSS选择器或正则表达式等工具,爬虫可以从HTML中提取出所需的数据,如文
matlab设置图像窗口大小,matlab 图形窗口大小的设置
weixin_39534002
matlab设置图像窗口大小
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%常用选项和小技巧%%%%%%画等值线[cchh]=contour(peaks(30),'LINESPEC','b-')clabel(cc,hh,'manual')%写文本text(5,10,'\bfmath\slmath\itmath\rmmath\alpha','color',[0.10.10.9],'fonts
Matlab在工业机器人中的运用,基于MATLAB的工业机器人建模与仿真.docx
weixin_34518801
摘要:机器人运动系统作为机器人系统中最重要的组成部分之一,其重要性不言而喻,因为它影响着机器人的主要性能,因此为了提高机器人的质量,对机器人进行运动学分析和仿真是不可或缺的。本次毕业设计主要对KUKA机器人的三维仿真进行了一系列的分析,主要是以下几个内容:(1)研究了机器人运动学仿真的背景意义及发展趋势。(2)通过对齐次坐标变换理论的研究,说明了KUKA机器人结构及参数,并且建立了相应的D-H参数
matlab游标标注移动,matlab实现图形窗口的数据游标
莫白想
matlab游标标注移动
DatacursorsforfigurewindowSeveralrelatedfunctions:CreateCursorsetsupaverticalcursoronallaxesinafigure.Thecursorscanbemovedaroundusingthemouse.MultiplecursorsaresupportedineachfigureGetCursorLocationre
MATLAB语言基础教程、 小项目1:简单的计算器、 小项目2:有页面的计算器、使用App Designer创建GUI计算器
azuredragonz
学习教程 matlab 开发语言
MATLABMATLAB语言基础教程1.MATLAB简介2.基本语法变量与赋值向量与矩阵矩阵运算数学函数控制流3.函数4.绘图案例:简单方程求解小项目1:简单的科学计算器功能代码项目说明小项目2:有页面的计算器使用AppDesigner创建GUI计算器主要步骤:完整代码(使用MATLAB编写)说明:如何运行:小项目总结MATLAB语言基础教程1.MATLAB简介MATLAB(矩阵实验室)是一种用于
MATLAB在无线通信系统测试和验证中的应用
2401_85812053
matlab 开发语言
在无线通信系统的开发过程中,测试和验证是确保系统性能满足设计要求的关键步骤。MATLAB提供了一系列的工具和功能,这些工具在无线通信系统的测试和验证中发挥着重要作用。本文将详细介绍MATLAB在无线通信系统测试和验证中的应用,包括信道建模、调制解调、射频(RF)链路分析以及硬件验证等方面。1.信道建模信道建模是无线通信系统设计中的关键环节,它影响着信号的传输质量和系统的整体性能。MATLAB提供了
MATLAB中的函数编写有哪些最佳实践
2401_85812053
matlab 算法 人工智能
在MATLAB中,函数是执行特定任务的代码块,可以通过自定义函数来提高代码的可重用性和模块化。以下是一些关于MATLAB函数编写的最佳实践:函数结构和语法:MATLAB函数由函数名、参数列表和函数体组成。函数名必须以字母开头,后面可以跟字母、数字或下划线。参数列表包含函数接收的输入变量,用逗号分隔。函数体包含要执行的代码。functiony=my_function(x)%函数体y=x^2;end参
Python和MATLAB及C++信噪比导图(算法模型)
亚图跨际
算法 交叉知识 Python 视频图像修复 模数转换 信号链噪音 频谱计算 量化周期性视觉刺激 高斯噪声的矩形脉冲 心率失常检测算法
要点视频图像修复模数转换中混合信号链噪音测量频谱计算和量化周期性视觉刺激脑电图高斯噪声的矩形脉冲总谐波失真周期图功率谱密度各种心率失常检测算法胶体悬浮液跟踪检测计算交通监控摄像头图像噪音计算Python信噪比信噪比是科学和工程中使用的一种测量方法,用于比较所需信号水平与背景噪声水平。信噪比定义为信号功率与噪声功率之比,通常以分贝表示。高于1:1(大于0dB)的比率表示信号大于噪声。信噪比是影响处理
Python(PyTorch)和MATLAB及Rust和C++结构相似度指数测量导图
亚图跨际
Python 交叉知识 算法 量化检查图像压缩质量 低分辨率多光谱 峰值信噪比 端到端优化图像压缩 手术机器人 三维实景实时可微分渲染 重建三维可视化
要点量化检查图像压缩质量低分辨率多光谱和高分辨率图像实现超分辨率分析图像质量图像索引/多尺度结构相似度指数和光谱角映射器及视觉信息保真度多种指标峰值信噪比和结构相似度指数测量结构相似性图像分类PNG和JPEG图像相似性近似算法图像压缩,视频压缩、端到端优化图像压缩、神经图像压缩、GPU变速图像压缩手术机器人深度估计算法重建三维可视化推理图像超分辨率算法模型三维实景实时可微分渲染算法MATLAB结构
含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)
冒泡芳
能源 matlab 开发语言
个人主页:研学社的博客欢迎来到本博客❤️❤️博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。本文目录如下:目录1概述2运行结果3参考文献4Matlab代码实现1概述光热发电(concentratingsolarpower,CSP)是一种新型可再生能源发电技术,具有低碳发电和高效储能的优势,但当前光热电站常充当单一发电源进行能源供应,其供能潜力未得到充分
互联网 Java 工程师面试题(Java 面试题四)
苹果酱0567
面试题汇总与解析 java 中间件 开发语言 spring boot 后端
下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底层Java最佳实JDBCDate,Time与CalendarJava处理XMLJUnit编程现在是时候给
【无标题】正则表达式笔记
qis_qis
正则表达式 笔记
作用查找特殊规则的字符串编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。0\d{2,3}-\d{7,8}基本匹配区分大小写cat会匹配"cat"CAt会匹配"CAt"元字符元字符是正则表达式的基本组成元素。元字符在这里跟它通常表达的意思不一样,而是以某种特殊的含义去解释。有些
Day25_0.1基础学习MATLAB学习小技巧总结(25)——四维图形的可视化
非常规定义M
0.1基础学习MATLAB 学习 matlab 开发语言 SIMULINK 数学建模
利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。参考书目:1、《MATLAB基础教程(第三版)(薛山)》2、《MATLABR2020a完全自学一本通》之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小
matlab时域离散信号与系统,时域离散信号和系统的频域分析
远方有城
matlab时域离散信号与系统
信号与系统的分析方法有两种:时域分析方法和频域分析方法。在连续时间信号与系统中,信号一般用连续变量时间t的函数表示,系统用微分方程描述,其频域分析方法是拉普拉斯变换和傅立叶变换。在时域离散信号与系统中,信号用序列表示,其自变量仅取整数,非整数时无定义,系统则用差分方程描述,频域分析方法是Z变换和序列傅立叶变换法。Z变换在离散时间系统中的作用就如同拉普拉斯变换在连续时间系统中的作用一样,它把描述离散
基于matlab的离散系统变换域分析实验,实验3 离散时间系统的变换域分析
mmjang
电子科技大学实验报告学生姓名:项阳学号:2010231060011指导教师:邓建一、实验项目名称:离散时间系统的变换域分析二、实验目的:线性时不变(LTI)离散时间系统的特性可以用其冲击响应序列来表示,也可以用传递函数和频率响应来表示,本实验通过使用MATLAB函数对离散时间系统的一些特性进行仿真分析,以加深对离散时间系统的零极点、稳定性,频率响应等概念的理解。三、实验内容:1、设X1(z)23z
matlab上下标如何输入,在Matlab中怎样输入特殊符号或者上标、下标
李一舟DESIGN
matlab上下标如何输入
Matlab的text/title/xlabel/ylabel对象支持简单的TeX排版语法,如希腊字母,上下标等例如text(0.5,0.5,'\alpha^\beta_2');Matlab图形中允许用TEX文件格式来显示字符。使用\bf,\it,\rm表示黑体,斜体,正体字符,特别注意大括号{}的用法。实例:在存在的图形上写一段有黑体、有斜体、有整体的句子。1、画图x=0:0.01:8;y=si
matlab带下标的字母,matlab的特殊字符(上下标和希腊字母等)
赤脚大仙儿
matlab带下标的字母
‘T=25\circC‘,(摄氏度)下标用_(下划线)上标用^(尖号)希腊字母等特殊字符用α\alphaβ\betaγ\gammaθ\thetaΘ\ThetaГ\Gammaδ\deltaΔ\Deltaξ\xiΞ\Xiη\eltaε\epsilonζ\zetaμ\miuυ\nuτ\tauλ\lamdaΛ\Lamdaπ\piΠ\Piσ\sigmaΣ\Sigmaφ\phiΦ\Phiψ\psiΨ\Psiχ
python学习第七节:正则表达式
一只会敲代码的小灰灰
python学习 python 学习 正则表达式
python学习第七节:正则表达式正则表达式基本上在所有开发语言中都会使用到,在python中尤为重要。当我们使用python开发爬虫程序将目标网页扒下来之后我们要从网页中解析出我们想要的信息,这个时候就需要正则表达式去进行匹配。importrere的常量re模块中有9个常量,常量的值都是int类型!(知道就行)修饰符描述re.l使匹配对大小写不敏感re.L做本地化识别(locale-aware)
掌握MATLAB中的图形用户界面布局管理器
原机小子
matlab 前端 开发语言
在MATLAB中,图形用户界面(GUI)的设计对于创建专业且用户友好的应用至关重要。布局管理器在GUI设计中扮演着核心角色,它们负责在窗口中自动管理和调整控件的位置和大小。本文将详细介绍MATLAB中的布局管理器,包括它们的使用方法和实际代码示例。1.布局管理器的基本概念布局管理器是GUI设计中的一个关键组件,它允许控件根据窗口的大小变化自动调整布局。MATLAB提供了多种布局管理器,如网格布局(
Matlab2024a安装教程
是阿宇呢
信息可视化 开发语言
MATLAB是一款商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分,可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。1.解压安装包:①鼠标右击【MATLABR2024a(64bit)
MATLAB中的控制系统工具箱:深入指南与实践应用
2401_85812026
matlab
MATLAB的控制系统工具箱(ControlSystemToolbox)是一个强大的工具集,它为工程师和研究人员提供了全面的控制系统设计、分析和仿真解决方案。本文将详细介绍如何在MATLAB中使用控制系统工具箱,包括系统建模、控制器设计、系统仿真和分析等方面。1.系统建模在控制系统工具箱中,可以通过多种方式对系统进行建模,包括状态空间模型、传递函数模型和零极点模型。1.1状态空间模型状态空间模型是
MATLAB中的代码覆盖测试:深入指南与实践应用
2401_85812026
matlab 开发语言
在软件测试领域,代码覆盖测试是一种重要的技术,用于评估测试用例的完整性和有效性。在MATLAB环境中,代码覆盖测试可以帮助开发者确保他们的代码在各种条件下都能正常工作,并且能够发现可能被忽视的错误。本文将详细介绍如何在MATLAB中进行代码覆盖测试,包括测试的类型、工具和实践方法。1.代码覆盖测试的基本概念代码覆盖测试旨在通过测试用例执行代码中的不同部分,以确保代码的每个部分都经过了验证。在MAT
连通无向图一般中心的算法及其matlab程序详解
夏天天天天天天天#
图论 算法 matlab 图论
#################本文为学习《图论算法及其MATLAB实现》的学习笔记#################若服务点只允许取在各顶点上,而服务对象却取在各顶点及各边(或弧)上的点,则在所有顶点中选定一个顶点作为图的一般中心其条件是该点离它本身的最远服务对象(包括顶点及各边(或弧)上的点)的距离达到极小值。寻找无向图的一般中心对解决网络最佳服务点确定的问题是十分有效的,使得服务对象的范围
jsonp 常用util方法
hw1287789687
jsonp jsonp常用方法 jsonp callback
jsonp 常用java方法
(1)以jsonp的形式返回:函数名(json字符串)
/***
* 用于jsonp调用
* @param map : 用于构造json数据
* @param callback : 回调的javascript方法名
* @param filters : <code>SimpleBeanPropertyFilter theFilt
多线程场景
alafqq
多线程
0
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?
Java多线程
2012年11月23日 15:41 Young9007 Young9007
4
0 0 4
Comment添加评论关注(2)
3个答案 按时间排序 按投票排序
0
0
最典型的如:
1、
Maven学习——修改Maven的本地仓库路径
Kai_Ge
maven
安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。
placeholder的浏览器兼容
120153216
placeholder
【前言】
自从html5引入placeholder后,问题就来了,
不支持html5的浏览器也先有这样的效果,
各种兼容,之前考虑,今天测试人员逮住不放,
想了个解决办法,看样子还行,记录一下。
【原理】
不使用placeholder,而是模拟placeholder的效果,
大概就是用focus和focusout效果。
【代码】
<scrip
debian_用iso文件创建本地apt源
2002wmj
Debian
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下
2.创建N个挂载点目录
如下:
debian:~#mkdir –r /media/dvd1
debian:~#mkdir –r /media/dvd2
debian:~#mkdir –r /media/dvd3
….
debian:~#mkdir –r /media
SQLSERVER耗时最长的SQL
357029540
SQL Server
对于DBA来说,经常要知道存储过程的某些信息:
1. 执行了多少次
2. 执行的执行计划如何
3. 执行的平均读写如何
4. 执行平均需要多少时间
列名 &
com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil
7454103
eclipse
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下:
错误提示信息:
An error has occurred.See error log for more details.
Reason:
com/genuitec/
用正则删除文本中的html标签
adminjun
java html 正则表达式 去掉html标签
使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。
如下:
public static String Html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textSt
嵌入式系统设计中常用总线和接口
aijuans
linux 基础
嵌入式系统设计中常用总线和接口
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线
Java函数调用方式——按值传递
ayaoxinchao
java 按值传递 对象 基础数据类型
Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。
首先,让我们看一看基础数据类型是如何按值传递的。
public static void main(String[] args) {
int a = 2;
ios音量线性下降
bewithme
ios音量
直接上代码吧
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
if (!_flag) {
_tempVolume = player.volume;
与其怨它不如爱它
bijian1013
选择 理想 职业 规划
抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。
一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。
一边时间不够用一边浪费时间
bingyingao
工作 时间 浪费
一方面感觉时间严重不够用,另一方面又在不停的浪费时间。
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。
精神还是很差,下午像一直野鬼在城市里晃荡。
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。
控制让自己周末早睡早起,你就成功了一半。
有多少个工作
【Scala八】Scala核心二:隐式转换
bit1129
scala
Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con
sudoku slover in Haskell (2)
bookjovi
haskell sudoku
继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。
board = [0,3,4,1,7,0,5,0,0,
0,6,0,0,0,8,3,0,1,
7,0,0,3,0,0,0,0,6,
5,0,0,6,4,0,8,0,7,
Java-Collections Framework学习与总结-HashSet和LinkedHashSet
BrokenDreams
linkedhashset
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序
读《研磨设计模式》-代码笔记-备忘录模式-Memento
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
/*
* 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
《RAW格式照片处理专业技法》笔记
cherishLC
PS
注意,这不是教程!仅记录楼主之前不太了解的
一、色彩(空间)管理
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼)
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv
使用 Git 下载 Spring 源码 编译 for Eclipse
crabdave
eclipse
使用 Git 下载 Spring 源码 编译 for Eclipse
1、安装gradle,下载 http://www.gradle.org/downloads
配置环境变量GRADLE_HOME,配置PATH %GRADLE_HOME%/bin,cmd,gradle -v
2、spring4 用jdk8 下载 https://jdk8.java.
mysql连接拒绝问题
daizj
mysql 登录权限
mysql中在其它机器连接mysql服务器时报错问题汇总
一、[running]
[email protected] :~$mysql -uroot -h 192.168.9.108 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access
Google Chrome 为何打压 H.264
dsjt
apple html5 chrome Google
Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome
yii 获取控制器名 和方法名
dcj3sjt126com
yii framework
1. 获取控制器名
在控制器中获取控制器名: $name = $this->getId();
在视图中获取控制器名: $name = Yii::app()->controller->id;
2. 获取动作名
在控制器beforeAction()回调函数中获取动作名: $name =
Android知识总结(二)
come_for_dream
android
明天要考试了,速速总结如下
1、Activity的启动模式
standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。)
singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac
高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元
gcq511120594
工作 项目管理
高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖!
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕
linux expect
heipark
expect
1. 创建、编辑文件go.sh
#!/usr/bin/expect
spawn sudo su admin
expect "*password*" { send "13456\r\n" }
interact
2. 设置权限
chmod u+x go.sh 3.
Spring4.1新特性——静态资源处理增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
idea ubuntuxia 乱码
liyonghui160com
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。
2.在ubuntu 下可以执行下面操作安装该字体:
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf /usr/share/fonts/truetype/simsun
fc-cache -f -v
改良程序的11技巧
pda158
技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
尽量保持方法简短
永远永远不要把同一个变量用于多个不同的
300个涵盖IT各方面的免费资源(下)——工作与学习篇
shoothao
创业 免费资源 学习课程 远程工作
工作与生产效率:
A. 背景声音
Noisli:背景噪音与颜色生成器。
Noizio:环境声均衡器。
Defonic:世界上任何的声响都可混合成美丽的旋律。
Designers.mx:设计者为设计者所准备的播放列表。
Coffitivity:这里的声音就像咖啡馆里放的一样。
B. 避免注意力分散
Self Co
深入浅出RPC
uule
rpc
深入浅出RPC-浅出篇
深入浅出RPC-深入篇
RPC
Remote Procedure Call Protocol
远程过程调用协议
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发