2017-07-25 6 views
-1

私の問題を説明するためのサンプルコードを書きました。私は、それぞれが独立して実行されるいくつかの操作を持っています(例のように4つだけでなく、それ以上)。私はしたい...Matlab内の異なる操作のセルに自動的に名前を付けて連結する方法

1)私はより多くの年、年の年と植物の種類(例えば、変数の名前を "string200811"年= 2008年のようにすることができるように、 PartOfYear = 1、PlantType = 1など)

2)連結も自動化します(下記参照)。

不明な点がある場合は教えてください。

私はあなたが cellfun(func, C)、使用したいものを達成することができると思う
% 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) 
+6

「C」とは何か、出力が期待されるものの例を挙げてください。 "反対のことは"あなたが何をしたいかについての非常に明確な説明ではありません... – Wolfie

+0

おそらく 'C {end}'が必要です。しかし、あなたの問題が何であるかを理解するには[MCVE]が必要です –

+0

私はこの質問を削除するのは間違いだと思います。私はそれが元の言葉では話題外であったと理解していますが、私はそれを完全に変更しました。質問は非常に明確であり、回答は私が投稿したコードのおかげで確認できます。それが私が質問を再投稿する理由です。 – LenaH

答えて

1

は、関数ハンドル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] 
この代わりに、行ベクトルの列ベクトル、単に

それを転置
output = cellfun(@(x) x(end), C).'; % Column vector output 

これは「セルの各セットの最後の要素を連結」されていることを確認する

+0

ありがとう!それは便利ですが、私の質問が広すぎると複数の人々が示唆しているので、私は今、私の特定の問題を明らかにする完全なコードを投稿しました。 – LenaH

関連する問題