使用 numpy 创建随机稀疏信号
Create Random sparse signal with numpy
在 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
在 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