2013-02-11 5 views
-1

Сказать, что я хочу осуществить следующие while-loop в matlab:Matlab - Предоставление индексов для векторов

n=10; 
k=0; 
while k<n 
    a = 3; 
    Cnew = Ck "union" a; 
    if (Ck+1==0) 
     Ck+1 = Cnew; 
    end 
end 

Как я могу это сделать, особенно индексация vectors? Как я могу иметь в Matlab следующие векторы C1, C2, C3, ... и т. Д.

Спасибо.

+1

Чего вы хотите достичь своей петлей? Я спрашиваю, потому что мне кажется, что вы возглавляете очень неидиоматический и, возможно, болезненный маршрут. – Jonas

+1

действительно сложно понять ваши вопросы: не могли бы вы быть более конкретными, предоставляя нам нужные вам входы и выходы и объясняя шаг за шагом, чего вы хотите достичь? – fpe

+0

Не могли бы вы объяснить на простом языке, что вы пытаетесь сделать? Вы хотите создать несколько новых векторов C1, C2 внутри цикла while? И какое значение вы хотите назначить? Вероятно, вам нужно использовать функцию eval в Matlab, но без дополнительных объяснений я больше не могу вам помочь. – Digna

ответ

2

Похоже, вы действительно не хотите, чтобы генерировать разные переменные имена, такие как c1, c2, ... и т.д.

считается Вы используете cell arrays?

Ваш код будет выглядеть примерно так

n=10; 
k=1; 
C{1} = []; 
while k <= n 
    a = 3; 
    Cnew = [ C{k}, a ]; 
    if numel(C) < k+1 || isempty(C{k+1}) % what you meant by Ck+1==0 ? 
     C{k+1} = Cnew; 
    end 
end 

см this question для подобной задачи.

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