Как можно поменять матрицу у Юлии? - PullRequest
2 голосов
/ 11 июня 2019

Не могли бы вы помочь мне?У меня есть эта матрица

> rout
4×5 Array{Int64,2}:
 0  1  4  0  2
 0  3  0  1  2
 0  2  4  0  3
 0  1  4  2  3

каждая строка этой матрицы имеет несколько разделов.например, первая строка имеет два раздела.первый раздел включает в себя 1,4 и второй раздел включает в себя 2 и последний ряд имеет один раздел 1,2,3,4.Я хочу получить матрицу, в которой число секций в каждом ряду будет равно значению другой матрицы (nrout[i,j]).для матрицы до rout это nrout может быть сделано: (столбцы nrout - 1,2,3,4)

> nrout
4×4 Array{Int64,2}:
 1  2  0  1
 2  2  1  0
 0  1  2  1
 1  1  1  1

вместо 1 на rout мест 1 (числораздела 1) в nrout.вместо 4 ставится 1 (номер раздела 1) в nrout.вместо этого 2 ставит 2 (номер раздела 2) в nrout.

Не могли бы вы мне помочь, как эта матрица может быть создана в Джулии?

1 Ответ

1 голос
/ 11 июня 2019

Я бы использовал зацикливание для этой проблемы:

function getnrout(rout)
    # assume we have at least one 0 in each row in column 1
    nrout = zeros(Int, size(rout, 1), size(rout, 2) - 1)
    for i in axes(rout, 1)
        section = 0
        for j in axes(rout, 2)
            v = rout[i,j]
            if v == 0
                section += 1
            else
                nrout[i, v] = section
            end
        end
    end
    return nrout
end
...