2016-10-27 2 views
0

Я не использовал ячейки массивов в Matlab и задал вопрос.цикл в каждом элементе массива ячейки в matlab

У меня есть 2 ячейки массивов c и l. Я хочу c иметь 10 матриц измерения 10 x 785. Я хочу прокрутить каждую строку матриц в c.

Например, я хочу заменить каждую из этих строк на другой вектор. Как мне это сделать?

Вот код, который я в настоящее время

k=10; 
c={10}; 
l={10}; 
for v=1:10 
    c{v}=rand(k,d); 
end 
for a=1:10 
    l{a}=zeros(k,1); 
end 
for s=1 : 10 
     for j=1:k 
      l{s}=c{s,???}*xn'; 
     end 
    end 

в последнем круге, я пытаюсь показать, какие ячейки c и l. Но как я могу получить доступ к каждой строке c{1}?

ответ

1

Ссылка на ячейку может использоваться в любом контексте, где вы должны использовать полную матрицу. Итак, чтобы получить j-й ряд матрицы M, вы бы сделали нормальный M(j,:). Чтобы получить j-я строка матрицы, хранящейся в массиве ячеек c, вы делаете c{1}(j,:).

Так что в вашем случае l{s}(j,:) = c{s}(j,:)*xn';

Обратите внимание, что c={10} не делать то, что вы ожидаете. Вы можете сказать c=cell(1,10), или вы можете очистить c и позволить ему строить динамически.

Наконец, поскольку каждая из матриц такого же размера, рассмотрим 3D-матрицу вместо массива ячеек. Он будет работать лучше, а синтаксис будет немного более компактным, и конкретная операция, которую вы выполняете, будет отображаться на матрицу умножить:

l = zeros(k, 1, 10); 
c = rand(k, d, 10); 

% Refer to c(:, :, 1) to get the first matrix