【问题标题】:Pass from multidimensional array to spreadsheet从多维数组传递到电子表格
【发布时间】:2015-10-06 22:08:44
【问题描述】:

我有一个多维数组,格式为:

其中每一行代表一个工作表,每一列代表一种变量。

我想要做的是将数据导出到电子表格中,其中每一行都存储在带有其列的工作表中。 (也许将sim 多维数组分成五个矩阵,然后将它们一起导出到电子表格会更容易)但我不知道这是否是最有效的方法。

这是电子表格的图片:

下面是我的代码,它基本上是从 Excel 中读取表格,并为每种类型的数据模拟 1000 个案例:

sim={};
for k = 1 : 5
sheet = xlsread('CB.xlsx', k);
[m, n] = size(sheet)
for i = 1 : n
[f,x] = ecdf(sheet(:,[i]));
[f, dup] = unique(f);
x = x(dup);
randomValues = rand(1, 1000);
sim{k,i} = round(interp1(f,x, randomValues));
end
end

尝试使用 Mikhail_Sam'answer 我遇到了以下问题:

`sheet = 1
for i = 1:5
for j = 1:5
xlswrite('filename.xls',sim(:,i,j),sheet,strcat(char(64+j),int2str(1)))
end
sheet = sheet+1;
 end`

但它说“索引超出矩阵尺寸”,然后我尝试了这段代码 sheet = 1 for i = 1:5 for j = 1:size(sheet) xlswrite('filename2.xls',sim{i,j},sheet,'A1:E1000'); end sheet = sheet+1; end 此代码将文件写入 5 张纸,但其中填充了多维数组每行的前 5 个数字。然后我尝试应用num2cell 并运行您的代码,但它再次给出“索引超出矩阵维度”

【问题讨论】:

    标签: excel matlab matrix multidimensional-array


    【解决方案1】:

    我不知道“最有效的方法”,但我是这样做的: 例如我创建3x3x3 矩阵并尝试将其写入excel:

    sheet = 1
    for i = 1:3
    for j = 1:3
    xlswrite(filename,x(:,i,j),sheet,strcat(char(64+j),int2str(1)));
    end
    sheet = sheet+1;
    end
    

    我得到了您想要的 - 3 张工作表和行中的数据。 按您的尺寸替换 3。但我有一个弱点 - 我不记得多维数组中的数字机制 - 是 i 在你的例子中是一行,或者 j... 无论如何它的工作只是看看数据并替换 i - j - : 如有必要。

    希望,它会有所帮助:)

    【讨论】:

      【解决方案2】:

      最后我弄清楚了如何从多维数组传递到每个电子表格。我决定将数据排列在同一个多维数组中,然后使用A{k}=transpose(vertcat(simulado{k,:})) 将数据传递给电子表格,然后应用for 循环将数据分别添加到每个工作表中。

       sheet = 1
       for i = 1:5
       xlswrite('filename.xls',A{1,i},sheet);
       sheet = sheet+1;
       end`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 2023-03-27
        • 1970-01-01
        • 2018-10-16
        • 2013-05-14
        • 1970-01-01
        • 2023-03-10
        相关资源
        最近更新 更多