MATLAB中matlab.lang.makeUniqueStrings用法

目录

语法

说明

示例

构造唯一字符向量

构造唯一字符向量并指定排除项

为指定的数组索引构造唯一元素

构造最大长度的唯一字符向量

确定已修改的字符串


        matlab.lang.makeUniqueStrings的功能是根据输入字符串构造唯一字符串

语法

U = matlab.lang.makeUniqueStrings(S)
U = matlab.lang.makeUniqueStrings(S,excludedStrings)
U = matlab.lang.makeUniqueStrings(S,whichStringsIdx)
U = matlab.lang.makeUniqueStrings(S,___, maxStringLength)
[U, modified] = matlab.lang.makeUniqueStrings(___)

说明

        U = matlab.lang.makeUniqueStrings(S) 通过为重复的字符串或字符向量添加下划线和数字的方式,基于输入字符串或字符向量 S 构造唯一字符串或字符向量 U。

        U = matlab.lang.makeUniqueStrings(S,excludedStrings) 构造在 U 中唯一且与 excludedStrings 有关的字符串或字符向量。makeUniqueStrings 函数不检查 excludedStrings 的唯一性。

        U = matlab.lang.makeUniqueStrings(S,whichStringsIdx) 指定 S 的子集并确保其在整个数据集中唯一。makeUniqueStrings 使 S(whichStringsIdx) 中的元素在其自身子集内及其余元素之间均唯一。makeUniqueStrings 返回 U 中未修改的其余元素。如果您有一个字符串数组或字符向量数组,且仅需要检查其中某些元素是否唯一,则可以使用此语法。

        U = matlab.lang.makeUniqueStrings(S,___, maxStringLength) 指定 U 中的元素的最大长度 maxStringLength。如果 makeUniqueStrings 在 maxStringLength 的长度范围内不能保证 S 中元素的唯一性,则会返回错误。您可以将此语法与前面语法中的任何输入参数结合使用。

        [U, modified] = matlab.lang.makeUniqueStrings(___) 返回一个逻辑数组 modified,指示哪些元素已修改。

示例

构造唯一字符向量

        创建一个名称元胞数组,并使每个元素唯一。

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

        makeUniqueStrings 函数为元素 3 和 5 中的重复字符名称添加下划线和递增数字。

构造唯一字符向量并指定排除项

        不指定排除的值,使 U 中的字符向量唯一。

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

        指定应从输出中排除字符向量 'Nick'。

U = matlab.lang.makeUniqueStrings(S, 'Nick')
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick_1'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

        makeUniqueStrings 从 U 中排除 'Nick',并将在元素 3 中找到的第一个重复项修改为 'Nick_1'。

        从唯一元胞数组中排除工作区变量。

Sue = 42;
U = matlab.lang.makeUniqueStrings(S, who)
U = 1x7 cell
    {'John'}    {'Sue_1'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

        因为 'Sue' 存在于工作区中,所以 makeUniqueStrings 通过添加下划线和数字来使此字符向量唯一。

为指定的数组索引构造唯一元素

        创建一个字符向量数组并使前四个元素唯一。

S = {'quiz' 'quiz' 'quiz' 'exam' 'quiz' 'exam'};
U = matlab.lang.makeUniqueStrings(S, 1:4)

U = 1x6 cell
    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}    {'exam'}

        U 中的前四个元素在其自身之间以及与元素 5 和 6('quiz' 和 'exam')中的其余字符向量之间均唯一。也可以使用逻辑数组代替线性索引范围以实现同样的结果:

U = matlab.lang.makeUniqueStrings(S, [true true true true false false])

U = matlab.lang.makeUniqueStrings(S, logical([1 1 1 1 0 0]))。

        将重复的 'quiz' 追加到 S 末尾并使前四个元素唯一。

S{end+1} = 'quiz'
S = 1x7 cell
    {'quiz'}    {'quiz'}    {'quiz'}    {'exam'}    {'quiz'}    {'exam'}    {'quiz'}

U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x7 cell
    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}    {'exam'}    {'quiz'}

        makeUniqueStrings 检查的字符向量在其自身之间以及与其余的元素之间仍然唯一。由于 makeUniqueStrings 不检查元素 4 之后的任何元素,因此重复的字符向量被保留下来。

构造最大长度的唯一字符向量

        根据 S 创建一个数组,其前三个元素唯一且每个字符串的最大长度为 5。

S = {'sampleData' 'sampleData' 'sampleData' 'sampleData'};
U = matlab.lang.makeUniqueStrings(S, 1:3, 5)
U = 1x4 cell
    {'sampl'}    {'sam_1'}    {'sam_2'}    {'sampleData'}

        第一个元素截断为 5 个字符。第二和第三个元素截断为 3 个字符,以允许 makeUniqueStrings 追加下划线和数字,并且仍不超过 5 个字符。

确定已修改的字符串

        创建一个名称元胞数组,并使每个元素唯一。modified 输出显示哪些输入元素已发生了修改。

S = ["John"    "Sue"    "Nick"    "John"    "Campion"    "John"    "Jason"];
[U, modified] = matlab.lang.makeUniqueStrings(S)
U = 1x7 string
    "John"    "Sue"    "Nick"    "John_1"    "Campion"    "John_2"    "Jason"

modified = 1x7 logical array

   0   0   0   1   0   1   0

参数说明

S — 输入值

        输入字符串,指定为字符向量、字符向量元胞数组或字符串数组。

excludedStrings — 要排除的字符串

        要从 U 中排除的字符向量,指定为字符向量、字符向量元胞数组或字符串数组。

whichStringsIdx — 要保证其唯一性的字符串子集

        要保证其在整个数据集中唯一性的 S 的子集,指定为线性索引范围或大小和形状与 S 相同的逻辑数组。如果 S 中有重复项,则 makeUniqueStrings 函数仅修改 whichStringsIdx 指定的字符串。

        如果 whichStringsIdx 是逻辑数组,则当相同位置处的数组元素具有值 true 时,将检查该处元素的唯一性。

maxStringLength — 字符串的最大长度

        U 中字符串的最大长度,指定为整数。如果 makeUniqueStrings 在 maxStringLength 的长度范围内不能保证 S 中元素的唯一性,则会返回错误。

U — 唯一字符串

        唯一字符串,以字符向量、字符向量元胞数组或字符串数组形式返回。输出与输入具有相同的维度 S

modified — 元素修改指示符

        元素修改指示符,以逻辑标量或数组形式返回,与输入 S 具有相同维度。值 1 (true) 表示 makeUniqueStrings 已修改相应位置处的元素。值 0 (false) 表示 makeUniqueStrings 不需要修改相应位置处的元素。

提示

  • 要确保输入值有效且唯一,请先使用 matlab.lang.makeValidName,再使用 matlab.lang.makeUniqueStrings。

S = {'my.Name','my_Name','my_Name'};
validValues = matlab.lang.makeValidName(S)
validUniqueValues = matlab.lang.makeUniqueStrings(validValues,...
    {},namelengthmax)
validValues = 

    'my_Name'    'my_Name'    'my_Name'


validUniqueValues = 

    'my_Name'    'my_Name_1'    'my_Name_2'

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
matlab的"java.lang.OutOfMemoryError: Java heap space"错误通常表示Java虚拟机在执行程序时内存不足。解决这个问题的方法是增加Java虚拟机的最大堆内存设置。下面是一种可能的解决方法: 1. 找到matlab的根路径,在matlab命令行输入命令:matlabroot,以获取根路径,比如:C:\MATLAB7。 2. 检查当前Java虚拟机的最大堆内存,输入命令:java.lang.Runtime.getRuntime.maxMemory。 3. 查看Java虚拟机的版本,输入命令:version -java。 4. 在 $MATLAB\bin\$ARCH 路径下创建java.opts文件。其$MATLAB是根路径,比如C:\MATLAB7,$ARCH是系统架构,例如win32。所以在C:\MATLAB7\bin\win32路径下创建java.opts文件。 5. 用记事本打开java.opts文件,根据Java虚拟机的不同版本,输入以下内容: - 对于1.6.0版本:-Xms64m -Xmx128m (32位系统) 或 -Xmx196m (64位系统) - 对于1.5.0版本:-Xms64m -Xmx96m (32位系统) 或 -Xmx128m (64位系统) - 对于1.4.2版本:-Xms16m -Xmx96m - 对于1.3.1版本:-Xms16000000 -Xmx64000000 - 对于1.2.2版本:-Xms16000000 -Xmx64000000 - 对于1.1.8版本:-ms16000000 -mx64000000 以我的Java版本1.4.2为例,在java.opts文件写入-Xmx96m,保存文件。 注意:如果输入错误,将会出现警告:Failed to start to Java Virtual machine。 6. 重新启动matlab,在命令行输入java.lang.Runtime.getRuntime.maxMemory,显示的最大内存应该已经更改,表示设置成功。 希望以上解决方法对您有帮助。如果您有任何相关问题,请提出。 相关问题: 1. 为什么会出现"java.lang.OutOfMemoryError: Java heap space"错误? 2. 如何增加Java虚拟机的最大堆内存设置? 3. 还有其他解决"java.lang.OutOfMemoryError: Java heap space"错误的方法吗?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值