2014-12-01 1 views
4

Есть ли эффективный способ кодирования, кроме того, что я сделал ниже, при преобразовании кода Matlab в Julia? Особенно, когда parent_matrix имеет размеры 2000X2000 и inner_matrix имеет размер 800X1?Заменить значения в подматрице в Julia

Matlab:

parent_matrix(inner_matrix(:),inner_matrix(:)) = replace_matrix; 

Julia:

ind_inner_vec=reshape(inner_matrix,size(inner_matrix)[1].*size(inner_matrix)[2],1) 
z=1 
for x in ind_inner_vec 
    for y in ind_inner_vec 
     parent_matrix[y,x]=replace_matrix[z] 
     z=z+1 
    end 
end 

ответ

2

Если я правильно

parent_matrix[vec(inner_matrix),vec(inner_matrix)] = replace_matrix 

понять будет делать то, что вы хотите. Обратите внимание, что vec нужен только потому, что вы сказали, что inner_matrix - это матрица столбцов - если бы это был фактически вектор, это не было бы необходимо.