Filter löschen
Filter löschen

Error using sparse Index into matrix must be positive.

14 Ansichten (letzte 30 Tage)
fadams18
fadams18 am 21 Feb. 2020
Bearbeitet: Fabio Freschi am 21 Feb. 2020
Im converting a code from python to Matlab
% Python Code
% ksq and old_dim are dimensions e.g. 5, or 10
C = np.arange(old_dim)
R = np.random.random_integers(ksq, size=old_dim) - 1
D = np.random.randint(2, size=old_dim) * 2 - 1
S = scipy.sparse.csr_matrix((D, (R, C)), shape=(ksq, old_dim))
The Matlab code i wrote.
C=1:old_dim;
R = randi(ksq,[1,old_dim]) - 1;
D = randi(2, [1,old_dim]) * 2 - 1;
S = sparse(R,C,D,ksq,old_dim);
When i run my matlab code, it tells me
Error using sparse Index into matrix must be positive.
My guess is when i have a zero in one of the variables R C D thats when it throws this error? and what could be a solution to this. thanks
  1 Kommentar
Adam
Adam am 21 Feb. 2020
Matlab indexes from 1 so just add one to any indexing you have in a 0-indexed language.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Fabio Freschi
Fabio Freschi am 21 Feb. 2020
Bearbeitet: Fabio Freschi am 21 Feb. 2020
Simply remove "-1" from the definition of R. randi returns pseudorandom integers between 1 and the first inupt. The entries of C will never be 0.
C = 1:old_dim;
R = randi(ksq,[1,old_dim]);
D = randi(2, [1,old_dim]) * 2 - 1;
S = sparse(R,C,D,ksq,old_dim);

Kategorien

Mehr zu Call Python from MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by