从multidimensional array传递到电子表格
我有一个multidimensional array,其forms为:
每行代表一张纸,每列代表一种variables。
我想要做的是将数据导出到电子表格中,每一行都存储在一个工作表的列中。 (也许它可以很容易地将sim
multidimensional array分成五个matrix,然后将它们一起导出到电子表格),但我不知道这是否是最有效的方法。
这是电子表格的图像:
下面是我的代码,它基本上从Excel中读取工作表,并对每种types的数据进行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`
但它说“索引超过matrix尺寸”,然后我试了这个代码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
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
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张表中,但是它填充了multidimensional array每行的前5个数字。 然后我试着应用num2cell
并运行你的代码,但是它又给出了“索引超出matrix维数”
我不知道'最有效的方法',但我这样做:例如,我创build3x3x3
matrix,并尝试写入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张,数据成行。 在您的尺寸replace3。 但我有一个弱点 – 我不记得在multidimensional array中的数字机制 – i
是你的例子中的一行,或者j
…无论如何,这只是看看数据,并取代i
– j
– :
如果有必要。
希望能帮助到你 :)
最后我想出了如何从multidimensional array传递到每个电子表格。 我决定将数据安排在同一个multidimensional array中,然后使用A{k}=transpose(vertcat(simulado{k,:}))
将数据传递给一个A{k}=transpose(vertcat(simulado{k,:}))
,然后应用一个for
循环将数据添加到每个单独分开。
sheet = 1 for i = 1:5 xlswrite('filename.xls',A{1,i},sheet); sheet = sheet+1; end`