我正在做一个使用子带加扰对音频信号进行加密的代码,我使用这个算法来混合它们:
https://imgur.com/gallery/POuKa17
Matriz是一个置换矩阵(每行和每列上除了1之外都是零),sb是我存储扰码的np数组,我想用for循环来 Shuffle ,我在另一个小数组文件上测试了该算法,它工作得很好,即使当我比较sb[:,0]和sb_midi[:,3]时,它们也给予了相同的结果(键为12212时,它将0更改为3),但是当我绘制sb和sb_midi时,它们完全相同,我试图绘制差异,但是,再次,它绘制了相同的结果。
这似乎很荒谬,我不能停止思考,我犯了一个愚蠢的错误,但我疯了寻找它,我修复了数百个错误,但这是真的很奇怪,任何想法?这是一个学士项目的代码,所以如果有任何帮助,那就太好了,非常感谢。
我试着把sb_midi打乱,但总是和sb一样
编辑:
sb=np.zeros((len(yll),n_sub)) #creamos esta matriz para en cada columna ubicar una señal diezmada
sb[:,0]=yll
sb[:,1]=ylh
sb[:,2]=yhl
sb[:,3]=yhh
sb_out=np.zeros((len(yll),n_sub))
sb_midi=np.zeros((len(yll),n_sub))
x_out=np.array((n_sub*len(yll),1))
字符串
编辑2:
matriz=matriz_permutacion(key,n_sub) #una función propia genera la matriz de permutación de orden el numero de subbandas
traspuesta=np.transpose(matriz)
plt.figure(4)
plt.plot(20*np.log10(abs(fft(sb))), color = 'red', label = 'x')
plt.title('Sb')
plt.xlabel('tiempo')
plt.ylabel('amplitud')
plt.savefig(r'Downloads\codigos_tfg\figuras\x.png')
i=np.argmax(matriz,axis=1)
#sb_midi.dtype=int
#sb.dtype=int
print(i)
for N in range(0, n_sub):
#[j,i]=np.max(matriz[:N, :]), np.argmax(matriz[:n, N])
j=i[N]
sb_midi[:,j]=sb[:,N]
#sb_midi=sb_midi[:n_sub,:n_sub]
plt.figure(5)
plt.plot(20*np.log10(abs(fft(sb_midi))), color = 'red', label = 'x')
plt.title('sb_midi')
plt.xlabel('tiempo')
plt.ylabel('amplitud')
plt.savefig(r'Downloads\codigos_tfg\figuras\x.png')
型
1条答案
按热度按时间zdwk9cvp1#
因为:
字符串
在原始缓冲区上创建一个 * 视图 *:
型
这两个数组对象共享相同的底层缓冲区,
transpose
对象只是切换为f-连续。如果你想要一个新的数组,你应该显式地复制它:
型
顺便说一下,你可以使用
.T
来转置一个数组:型