Создать случайный разреженный сигнал с numpy - PullRequest
0 голосов
/ 30 января 2020

В Matlab я использую следующее для простого создания случайного разреженного сигнала:

N = 100; % Total length of sparse signal;
n = 20; % number of non-zero elements;
x = zeros(N,1);
r = -5 + (5+5)*rand(n,1); %random signal amplitude between -5 and 5
k = randi([0 100],1,n); % locations of the sparse singal
x(k) = r; % The sparse signal

С помощью вышеуказанного кода Matlab я получаю желаемый разреженный сигнал x длины 100 с ненулевыми элементами в местах, заданных как к. Есть ли простой способ сделать это в Python, numpy? На самом деле, я изучаю Python и пытаюсь преобразовать вышеуказанный код. По сути, я могу преобразовать все вышеперечисленное, что очень похоже на Python, но я не могу преобразовать строку

x(k) = r; % The sparse signal

как мне сделать это в Python?

1 Ответ

0 голосов
/ 31 января 2020

Я нашел свой ответ на вышесказанное. На данный момент мне достаточно перевести приведенный выше фрагмент кода Matlab следующим образом:

def createSparseSignal(N,n):
    sig = np.zeros(N)
    r = 5*np.random.rand(n,1)
    k = np.random.randint(1,100,n)

    a = 1
    for j in range(n):
        i = a*j + 1
        sig[i*k[j]] = r[j]
        a = j-j

    return sig
...