在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中执行此操作?
我已经找到了自己的答案。就目前而言,对我而言,将上述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