【问题标题】:Create output file in matlab containing numeric and string cells在 matlab 中创建包含数字和字符串单元格的输出文件
【发布时间】:2013-09-19 10:18:30
【问题描述】:

我目前正在做一个项目,我必须在 Matlab 和 R 中编写相同的工具并比较两个软件选项。 我从 R 开始,现在我正在将代码翻译成 Matlab,但我现在陷入了最重要的部分。该工具在进行分析后创建的输出文件。 基本上,我的工具进行了循环n 次的分析,在每个循环之后,我得到许多变量进入输出表。所以,更清楚地说,在每个循环之后我都会得到变量:

A = 123

B = 456

C = 'string1'

D = 'string2'

E = 789

每个变量中的值在每次循环后都会发生变化,我只想说明变量既是数字值又是字符串值,因为这是导致我的问题的原因。

R 中,我在每个循环之后所做的是:

outp <- cbind(A,B,C,D,E)

并在一个水平排列的单元格中创建一个包含每个变量的数据框,然后将每个循环的结果垂直添加到一个新的数据框中:

outp2 <- rbind(outp2,outp)

所以最后我得到一个数据框 (outp2),其中包含 A、B、C、D、E 列和 n 行,其中包含每个循环后每个变量的值。因此,在循环过程结束时,我可以使用write.csv 函数并创建一个包含数字和字符串列的outp2 输出文件。

我尝试在 Matlab 中执行此操作,但我找不到可以像在 R 中那样连接数据的函数,因为使用括号 '[]' 只允许我连接数字类型的变量。所以基本上我的问题是:如何在 Matlab 中复制我在 R 中所做的事情?

我希望我说得够清楚了,我发现它有点难以解释。

【问题讨论】:

    标签: r matlab csv output


    【解决方案1】:

    您可以在输出后附加一个单元格数组,首先使用大括号声明您的单元格格式(空{} 或包含您的数据{...}),然后使用括号[...] 连接输出(后一行其他人使用;)。

    out_array = {};        %initialize empty
    
    %vertical concatenation with ";"
    for ii = 1:3
        out_array = [out_array; {123, 456, 'string1', 'string2', 789}];
    end
    

    这给了

    out_array =

    [123]    [456]    'string1'    'string2'    [789]
    [123]    [456]    'string1'    'string2'    [789]
    [123]    [456]    'string1'    'string2'    [789]
    

    【讨论】:

      【解决方案2】:

      如果这能解决你的问题,现在不要这样做,但在 Matlab 中你可以做类似的事情

      oupt = {123, 456, 'string1', 'string2', 789}
      

      只需使用大括号而不是方括号。

      【讨论】:

        【解决方案3】:

        正如他们之前所说,使用花括号来创建元胞数组。我想 A、B、C、D 和 E 是您的表头,并且您已经拥有它们下面的数据,所以我会这样做:

        outp = { A , B , C , D , E };
        # This next step is only to have some data...
        outp2 = magic(5);
        outp2 = num2cell(outp2);
        output = [ outp ; outp2 ]
        
        output = 
        
            [123]    [456]    'string1'    'string2'    [789]
            [ 17]    [ 24]    [      1]    [      8]    [ 15]
            [ 23]    [  5]    [      7]    [     14]    [ 16]
            [  4]    [  6]    [     13]    [     20]    [ 22]
            [ 10]    [ 12]    [     19]    [     21]    [  3]
            [ 11]    [ 18]    [     25]    [      2]    [  9]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-28
          • 2017-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多