2016-05-29 7 views
0

В коде Matlab я получаю сообщение об ошибке «FOR index index неизвестного размера поддерживается только в том случае, если они имеют форму A: B или A: B: C» всякий раз, когда я использую для индексации вектора в цикле for, например:Ошибка в коде Matlab «для индексов циклов» .. как изменить код?

for e=s:-1:1 
for l=1:s 
    for k=1:b  
    E=find(sum(B(:,l,:))==k)'; 
    coder.varsize('E', [1,70],[0,1]); 
     for j=E 
      coder.varsize('i', [1,70],[0,1]); 
      for i=E 
       if isequal(B(:,e,i),B(:,e,j)) %for k=1 we want the second column of i to be identical to the first colum of j or vice versa. 
        if isequal(sort(sum(B(1:s,s+1:b+s,i))),sort(sum(B(1:s,s+1:b+s,j)))) 
         B(:,l,i)=B(:,l,j); 
         B(l,:,i)=B(l,:,j); 
        else 
         ; 
        end 
       end 
      end 
     end 
    end 
end 
end 

Я понимаю, что кодировщик нужно что-то вроде «A: B», но мой вектор Е здесь содержит, например, [7,11,13], и я не могу использовать что-то вроде «Е (1,1): E (1,3) ", потому что тогда я не получаю 7 8 9 10 11 12 13.

Любые предложения о том, как я могу изменить код?

спасибо

ответ

1

Почему бы не просто сделать:

for ind = 1:length(E) 
    i = E(ind); 
    % ... 
end 
+0

благодаря отлично работает – Sha

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