【问题标题】:Split a value of different data types cell array based upon a delimiter根据分隔符拆分不同数据类型元胞数组的值
【发布时间】:2017-05-06 11:46:41
【问题描述】:

考虑元胞数组:

MyValues = {'HI, HOW ARE YOU, NICE TO MEET YOU, 1.32, -0.54BC, AUF WIEDERSEHEN'
            'HELLO, YES I am fine, Thank you for asking, 0.666HG, 67@#, 84'     }

我想用分隔符(逗号)分隔的值分割这个元胞数组。像这样的:

NewValues = { 'HI'
              'HOW ARE YOU'
              'NICE TO MEET YOU'
              '1.32'
              '-0.54BC'
              'AUF WIEDERSEHEN'
              'HELLO'
              'YES I am fine'
              'Thank you for asking'
              '0.66HG'
              '67@#'
              '84'      }

【问题讨论】:

  • 您似乎忘记了您的问题是什么。你到底想问什么?
  • @rayryeng 谢谢,我再次编辑了我的问题
  • 我仍然不知道你在问什么。看起来您有一个 2 元素元胞数组,其中每个元素都是一个字符串。您是否希望创建一个 N 元素元胞数组,您想在其中根据逗号作为分隔符来分解字符串?
  • 我得到一个单元格数组的输出,其值如HI, HOW ARE YOU, NICE TO MEET YOU, 1.32...... 在一行中,我想使用一些指定的matlab函数重新排列到每一行中。
  • 我们不是来解决你的作业的。至少分享一下你到目前为止尝试过的东西。

标签: arrays matlab sorting cell


【解决方案1】:

这可以使用cellfunstrsplit 来完成,如下所示:

NewValues = cellfun(@(x) strsplit(x, ', '), MyValues, 'UniformOutput',0);
NewValues = [NewValues{:}].'

【讨论】:

  • 为什么不用[NewValues{:}] 而不是horzcat?它稍微快一点,而且在国际海事组织的眼睛上更容易……我猜是口味问题。
  • 嗨@Sardar_Usama 我之前尝试过上面的函数,这只适用于字符串,但我的单元格数组包含字符和整数
  • @MohammedNadaf 然后你应该改进你的问题以显示你的实际数据是什么样的。这不是你第一次犯这样的错误
  • @RodyOldenhuis 我不知道这两个的速度因素。谢谢你让我知道☺
  • @Sardar_Usama 虽然不多,但确实存在。
【解决方案2】:

这里有一个替代方案:

NewValues = regexp(MyValues, ', ', 'split');
NewValues = [NewValues{:}]';

这适用于您发布的示例,但从您的 cmets 来看,它不会解决您的实际问题。

因此,请发布您的实际问题的实际示例,我们将能够更多更快更好地为您提供帮助。

【讨论】:

  • @Sardar_Usama 是的,我在您发表评论之前发现了错字,但谢谢!在元胞数组的上下文中,ctransposetranspose 运算符之间没有区别。此外,我只是使用转置使输出与 OP 发布的内容一致,但它甚至可能没有必要......
  • 当我看到你已经修复它时,我删除了我的评论。
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2023-02-11
  • 2013-04-07
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多