Я немного новичок и в Matlab, и в Python, поэтому, многие извинения, если этот вопрос немного тупой ...
Я пытаюсь преобразовать некоторый код Matlab в Python, используя numpy и scipy, и все шло хорошо, пока я не достиг разреженной матрицы, которую кто-то написал. Код Matlab выглядит так:
unwarpMatrix = sparse(phaseOrigin, ceil([1:nRead*nSlice*nPhaseDmap]/expan), 1, numPoints, numPoints)/expan;
Вот мой код на python (с моим мыслительным процессом), приведший к моей попытке преобразования. Для данного набора данных, с которым я тестировал (в Matlab и Python):
Nread = 64
nslice = 28
nphasedmap = 3200
расширение = 100
numpoints = 57344
Таким образом, длина массивов phaseorigin, s и j равна 5734400 (и я подтвердил, что функции, создающие мой массив phaseorigin, выводят точно такой же результат, что и Matlab)
#Matlab sparse takes: S = sparse(i,j,s,m,n)
#Generates an m by n sparse matrix such that: S(i(k),j(k)) = s(k)
#scipy csc matrix takes: csc_matrix((data, ij), shape=(M, N))
#Matlab code is: unwarpMatrix = sparse(phaseOrigin, ceil([1:nRead*nSlice*nPhaseDmap]/expan), 1, numPoints, numPoints)/expan;
size = nread*nslice*nphasedmap
#i would be phaseOrigin variable
j = np.ceil(np.arange(1,size+1, dtype=np.double)/expan)
#Matlab apparently treats '1' as a scalar so I should be tiling 1 to the same size as j and phaseorigin
s = np.tile(1,size)
unwarpmatrix = csc_matrix((s,(phaseorigin, j)), shape=(numpoints,numpoints))/expan
поэтому, когда я пытаюсь запустить свой код Python, я получаю:
ValueError: column index exceedes matrix dimensions
Этого не происходит, когда я запускаю код Matlab, даже если размеры массива превышают определенный размер матрицы ...
Что я делаю не так? Я явно что-то напортачил ... Большое спасибо заранее за любую помощь!