使用numpy创建随机稀疏信号

问题描述 投票:0回答:1

在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代码,我得到了我想要的长度为100的稀疏信号x,它在k给定的位置具有非零元素。有没有一种简单的方法可以在python中做到这一点,numpy?实际上,我正在学习Python并尝试转换上面的代码。基本上,我可以转换以上所有内容,这在Python中非常相似,但是我似乎无法转换行

x(k) = r; % The sparse signal

如何在Python中执行此操作?

python arrays numpy signals sparse-matrix
1个回答
0
投票

我已经找到了自己的答案。就目前而言,对我而言,将上述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
© www.soinside.com 2019 - 2024. All rights reserved.