gpt4 book ai didi

matlab - 将 strsplit 应用于字符串列 (cellstr)

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:07 25 4
gpt4 key购买 nike

是否有可能有一个 Mx1 单元格数组,每个单元格中包含字符串,并根据分隔符 '/'(比方说)拆分每个这样的字符串,并将结果输出到 MxN 单元格数组,其中 N 是在所有拆分字符串中是否出现“/”?

在我的例子中,“/”的出现次数是统一的(不统一的可能性可能是实现这种功能的一般问题,尽管可以想象存储 NULL 值)。

显然这可以通过循环实现,调用 splitstr M 次,但我希望存在矢量化解决方案。


帮助澄清。假设我们有

C{1,1} = "1string/2string/.../Nstring"

C{2,1} = "1string/2string/.../Nstring"

...

C{M,1} = "1string/2string/.../Nstring"

我希望D成为

D{1,1} = "1string"D{1,2} = "2string"... D{1,N} = "Nstring"

D{2,1} = "1string"D{2,2} = "2string"... D{2,N} = "Nstring"

...

D{M,1} = "1string"D{M,2} = "2string"... D{M,N} = "Nstring"

或大致等效的东西(例如;输出不需要是 MxN 元胞数组;它仍然可以是 Mx1 元胞数组,但每个元胞都是 1xN(或 Nx1)数组,其中元胞是拆分字符串)。


这是我当前的实现(但使用 M 和 N 而不是 C 和 D;对于混淆感到抱歉)。

M = strtok(textscan(iID, formatSpec, 'Delimiter', ',', 'HeaderLines', 1){1,1}, '"');
% note that strtok will return a cell array of size TOTAL_ROWS x 1
N = cell(length(M), 3);
for i = 1:length(M)
N(i,:) = strsplit(M{i,1}, '/');
endfor

由于文件很大,如果有矢量化的解决方案,我想找一个。

最佳答案

你可以使用 regexp 来做到这一点使用 'split' 修饰符:

D = regexp(C, '/', 'split');

这给出了一个由 1xN 元胞数组组成的 Mx1 元胞数组。如果您想将其折叠成一个 MxN 元胞数组,请使用

D = vertcat(D{:});

关于matlab - 将 strsplit 应用于字符串列 (cellstr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com