如何在Matlab中自动命名和连接来自不同操作的单元格

时间:2017-07-25 14:06:55

标签: matlab concatenation cell

我写了一个示例代码来说明我的问题 - 见下文。我有几个操作,每个操作都是独立执行的(不仅如示例中的4个,而且更多)。我想......

1)自动命名结果,以便我可以使用更长的时间,部分年份和工厂类型(例如,当Year = 2008时,将变量命名为“string200811”,PartOfYear = 1,PlantType = 1等)

2)自动化连接(见下文)。

如果有什么不清楚,请告诉我!

% Operation 1
Year = 2008;
PartOfYear = 1;
PlantType = 1;
string200811 = 'blabla'; % some random result
number200811 = rand(1); % some other random result
vector200811 = [rand(1); rand(1); rand(1); rand(1)]; % some other random result

% Operation 2
Year = 2008;
PartOfYear = 1;
PlantType = 2;
string200812 = 'blablablubb';
number200812 = rand(1);
vector200812 = [rand(1); rand(1); rand(1); rand(1)];

% Operation 3
Year = 2008;
PartOfYear = 2;
PlantType = 1;
string200821 = 'blablabla';
number200821 = rand(1);
vector200821 = [rand(1); rand(1); rand(1); rand(1)];

% Operation 4
Year = 2008;
PartOfYear = 2;
PlantType = 2;
string200822 = 'blablablablubb';
number200822 = rand(1);
vector200822 = [rand(1); rand(1); rand(1); rand(1)];

% Concatenate results
Results = {2008, 1, 1, string200811, number200811;...
           2008, 1, 2, string200812, number200812;...
           2008, 2, 1, string200821, number200821;...
           2008, 2, 2, string200822, number200822}
Table = cell2table(Results);
writetable(Table,'ResultsTest.xls','Sheet',1);

vectors = vertcat(vector200811, vector200812, vector200821, vector200822)

1 个答案:

答案 0 :(得分:1)

我认为你可以使用cellfun(func, C)来实现你想要的目标,其中:

  

调用函数句柄self.view指定的函数并传递单元格数组func

中的元素

所以一个简单的例子就是

C

要使其成为列向量而不是行向量,只需将其转置

即可
 % Cell array of vectors
 C = {[1 2 3], [4 5 6], [7 8 9], [10 11 12]};
 % Get the "end" (last) element of each of the cell array's members
 output = cellfun(@(x) x(end), C);
 >> output = [3 6 9 12]

这是"连接每组单元格的最后元素"。