2013-03-19 3 views
0

Я пытаюсь сделать что-то довольно простое, но не могу показаться, чтобы получить его ...вложенными для запроса петли

У меня есть 3 клетки-массивы со строками

A = {'ConditionA'; 'ConditionB'; 'ConditionC'; 'ConditionD'}; 

B = {'Case1'; 'Case2'; 'Case3'; 'Case4'}; 

C = {'Rice'; 'Beans'; 'Carrots'; 'Cereal';'Tomato'; 'Cabbage';... 
    'Sugar'} 

Я хочу, чтобы производит вектор с каскадной комбинацией, как это было «диаграмма дерева», как (strcat?):

strcat(A(1),B(1),C(1)) 
strcat(A(1),B(1),C(2)) 
strcat(A(1),B(1),C(3)) 
strcat(A(1),B(1),C(4)) 
strcat(A(1),B(1),C(5)) 
strcat(A(1),B(1),C(6)) 
strcat(A(1),B(1),C(7)) 

strcat(A(1),B(2),C(1)) 

так что первые элементы, которые я пытаюсь получить это (в колонке в идеале):

ConditionACase1Rice ConditionACase1Beans ConditionACase1Carrots ConditionACase1Cereal ConditionACase1Tomato ConditionACase1Cabbage ConditionACase1Sugar ConditionACase2Rice и т.д. и т.д. и т.п. ...

Я знаю, что:

for i=1:length(A) 
    E(i) = strcat(A(i),B(1),C(1)) 
end 

Работы для одного "уровня". Я пробовал:

for i=1:length(A) 
    for j=1:length(B) 
     for k=1:length(C) 
      P(i) = strcat(A(i),B(j),C(k)); 
     end 
    end 
end 

Но это не работает ...

Я был бы очень признателен, если бы я мог помочь с этим.

Заранее благодарен!

ответ

0

Из чего я понял, вы хотите, чтобы все возможные комбинации строк входных массивов были указаны. Если да, то просто заменить вложенные циклы со следующим:

P = cell(length(A)*length(B)*length(C),1); 
t=1; 
for i=1:length(A) 
    for j=1:length(B) 
     for k=1:length(C) 
      P(t) = strcat(A(i),B(j),C(k)); 
      t = t+1; 
     end 
    end 
end 

Для входных массивов,

>> A = {'ConditionA'; 'ConditionB'; 'ConditionC'; 'ConditionD'}; 
>> B = {'Case1'; 'Case2'; 'Case3'; 'Case4'}; 
>> C = {'Rice'; 'Beans'; 'Carrots'; 'Cereal';'Tomato'; 'Cabbage';'Sugar'}; 

Значение Р будет:

>> P 

P = 

    'ConditionACase1Rice' 
    'ConditionACase1Beans' 
    'ConditionACase1Carrots' 
    'ConditionACase1Cereal' 
    'ConditionACase1Tomato' 
    'ConditionACase1Cabbage' 
    'ConditionACase1Sugar' 
    'ConditionACase2Rice' 
    'ConditionACase2Beans' 
    'ConditionACase2Carrots' 
    'ConditionACase2Cereal' 
    'ConditionACase2Tomato' 
    'ConditionACase2Cabbage' 
    'ConditionACase2Sugar' 
    'ConditionACase3Rice' 
    'ConditionACase3Beans' 
    'ConditionACase3Carrots' 
    'ConditionACase3Cereal' 
    'ConditionACase3Tomato' 
    'ConditionACase3Cabbage' 
    'ConditionACase3Sugar' 
    'ConditionACase4Rice' 
    'ConditionACase4Beans' 
    'ConditionACase4Carrots' 
    'ConditionACase4Cereal' 
    'ConditionACase4Tomato' 
    'ConditionACase4Cabbage' 
    'ConditionACase4Sugar' 
    'ConditionBCase1Rice' 
    'ConditionBCase1Beans' 
    'ConditionBCase1Carrots' 
    'ConditionBCase1Cereal' 
    'ConditionBCase1Tomato' 
    'ConditionBCase1Cabbage' 
    'ConditionBCase1Sugar' 
    'ConditionBCase2Rice' 
    'ConditionBCase2Beans' 
    'ConditionBCase2Carrots' 
    'ConditionBCase2Cereal' 
    'ConditionBCase2Tomato' 
    'ConditionBCase2Cabbage' 
    'ConditionBCase2Sugar' 
    'ConditionBCase3Rice' 
    'ConditionBCase3Beans' 
    'ConditionBCase3Carrots' 
    'ConditionBCase3Cereal' 
    'ConditionBCase3Tomato' 
    'ConditionBCase3Cabbage' 
    'ConditionBCase3Sugar' 
    'ConditionBCase4Rice' 
    'ConditionBCase4Beans' 
    'ConditionBCase4Carrots' 
    'ConditionBCase4Cereal' 
    'ConditionBCase4Tomato' 
    'ConditionBCase4Cabbage' 
    'ConditionBCase4Sugar' 
    'ConditionCCase1Rice' 
    'ConditionCCase1Beans' 
    'ConditionCCase1Carrots' 
    'ConditionCCase1Cereal' 
    'ConditionCCase1Tomato' 
    'ConditionCCase1Cabbage' 
    'ConditionCCase1Sugar' 
    'ConditionCCase2Rice' 
    'ConditionCCase2Beans' 
    'ConditionCCase2Carrots' 
    'ConditionCCase2Cereal' 
    'ConditionCCase2Tomato' 
    'ConditionCCase2Cabbage' 
    'ConditionCCase2Sugar' 
    'ConditionCCase3Rice' 
    'ConditionCCase3Beans' 
    'ConditionCCase3Carrots' 
    'ConditionCCase3Cereal' 
    'ConditionCCase3Tomato' 
    'ConditionCCase3Cabbage' 
    'ConditionCCase3Sugar' 
    'ConditionCCase4Rice' 
    'ConditionCCase4Beans' 
    'ConditionCCase4Carrots' 
    'ConditionCCase4Cereal' 
    'ConditionCCase4Tomato' 
    'ConditionCCase4Cabbage' 
    'ConditionCCase4Sugar' 
    'ConditionDCase1Rice' 
    'ConditionDCase1Beans' 
    'ConditionDCase1Carrots' 
    'ConditionDCase1Cereal' 
    'ConditionDCase1Tomato' 
    'ConditionDCase1Cabbage' 
    'ConditionDCase1Sugar' 
    'ConditionDCase2Rice' 
    'ConditionDCase2Beans' 
    'ConditionDCase2Carrots' 
    'ConditionDCase2Cereal' 
    'ConditionDCase2Tomato' 
    'ConditionDCase2Cabbage' 
    'ConditionDCase2Sugar' 
    'ConditionDCase3Rice' 
    'ConditionDCase3Beans' 
    'ConditionDCase3Carrots' 
    'ConditionDCase3Cereal' 
    'ConditionDCase3Tomato' 
    'ConditionDCase3Cabbage' 
    'ConditionDCase3Sugar' 
    'ConditionDCase4Rice' 
    'ConditionDCase4Beans' 
    'ConditionDCase4Carrots' 
    'ConditionDCase4Cereal' 
    'ConditionDCase4Tomato' 
    'ConditionDCase4Cabbage' 
    'ConditionDCase4Sugar' 

Позвольте мне знать, если вы нуждаются в дальнейшей помощи.

+0

Дорогой Руни Майкл, это именно то, что я искал. Большое спасибо! (PS. Имена здесь - это просто псевдо-имена для того, что я делаю, это не диета для животных!) – aerodude

+0

@aerodude. Конечно. Рад был помочь. :) –

0

{

x = 1; 
    for i=1:length(A) 
     for j=1:length(B) 
      for k=1:length(C) 
       P(x) = strcat(A(i),B(j),C(k)); 
       x = x + 1; 
      end 
     end 
    end 

} 

Пожалуйста, в основном проверить свой код, прежде чем отправлять на ПО, так как это очень простой отладки

+0

Уважаемый сэр, Спасибо за помощь. Я использую MATLAB, и я не могу найти синтаксис как , как упоминалось выше. Пожалуйста, имейте в виду, что отладка может выполняться только теми, кто знает, что они делают ... Я здесь не ленивый, я действительно застрял в этой проблеме. Любая дополнительная помощь была бы замечательной, так как это еще не решило ее ... – aerodude

+0

отредактировал «лучше» код –

+0

Спасибо за помощь. – aerodude

0

Я не очень знаком с MATLAB .. но, возможно, попробовать что-то вроде этого?

for A = {'ConditionA'; 'ConditionB'; 'ConditionC'; 'ConditionD'}; 
    for B = {'Case1'; 'Case2'; 'Case3'; 'Case4'}; 
    for C = {'Rice'; 'Beans'; 'Carrots'; 'Cereal';'Tomato'; 'Cabbage'; 'Sugar'} 
     P(i) = strcat(A(i),B(j),C(k)); 
    end 
    end 
    end 
+0

Привет. Спасибо за вашу помощь, но это было очень похоже на то, что у меня было неудачно ...кажется, что индекс должен быть обновлен внутри самого внутреннего цикла, как показано ниже. По крайней мере, в MATLAB ... Большое спасибо еще раз. – aerodude

Смежные вопросы