【问题标题】:How to extract Curly Braces Vector from Cell String in Matlab如何在 Matlab 中从单元格字符串中提取花括号向量
【发布时间】:2014-02-09 06:45:59
【问题描述】:

我在 Matlab 的单元格中有以下字符串(1X48 的字符)

{ {1 , 0 , 0 } , { 0 , 1 , 0 } , { 0 , 0 , 1 } }。

我正在尝试在新行中仅使用空格获取三个单独的字符串,以便数据看起来像

1 0 0

0 1 0

0 0 1

如果有人有任何想法可以在 matlab 中隐藏,我将不胜感激。

谢谢

【问题讨论】:

    标签: string matlab vector char cell


    【解决方案1】:

    最好用cell2mat函数

    在你的情况下,你可以尝试这样的事情,

    temp = { {1 , 0 , 0 } , { 0 , 1 , 0 } , { 0 , 0 , 1 } }; out = [cell2mat(temp{1, 1}); cell2mat(temp{1, 2}); cell2mat(temp{1, 3})]

    希望对你有帮助!!

    【讨论】:

    • 谢谢!这对我很有帮助。 herohuyongtao 还建议使用 strjoin 函数来获取字符串中的输出。
    • 我在 matlab 中从单元格中读取字符串时遇到问题。我有我正在使用 xlsread 在 matlab 中阅读的 excel 电子表格。我尝试使用 eval() 将上面的字符串转换为单元格,但不知何故它没有分解为单个单元格。我无法执行您提到的方法。你知道可能是什么问题吗?
    • 如果您能分享任何 excel 数据表的示例数据,那就太好了,但一般来说,将“字符串转换为单元格”更好地使用 str2mat 和 mat2cell
    【解决方案2】:

    您正在寻找strjoin:

    a = { {1 , 0 , 0 } , { 0 , 1 , 0 } , { 0 , 0 , 1 } };
    b = strjoin(a, ' ')
    

    然后:

    b =
    
    1 0 0 0 1 0 0 0 1
    

    编辑:如果你想加入新的线路,你可以使用

    b = [strjoin(a(1), ' '); strjoin(a(2), ' '); strjoin(a(3), ' ');]
    

    然后:

    b =
    
    1 0 0
    0 1 0
    0 0 1
    

    P.S.: strjoin 在 MATLAB R2013b 中工作。对于早期版本,您可以从here下载strjoin函数。

    【讨论】:

    • 谢谢!这也是帮我。这也有效。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2011-11-04
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多