在matlab中创建包含数字和字符串单元格的输出文件

时间:2013-09-19 10:18:30

标签: r matlab csv output

我目前正在开发一个项目,我必须在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中做的事情?

我希望我很清楚,我发现它有点难以解释。

3 个答案:

答案 0 :(得分:0)

现在不要解决你的问题,但是在Matlab中你可以做像

这样的事情
oupt = {123, 456, 'string1', 'string2', 789}

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

答案 1 :(得分:0)

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

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 :(得分:0)

正如他们之前所说,使用花括号来创建一个单元格数组。我想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]