当我取-1的平方根时,它给出了一个错误:
sqrt中遇到无效值
我该如何解决这个问题?
/////////
arr=sqrt(-1)
print(arr)
OUTPUT
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Matlab代码转换为Python.我想fdesign.lowpass()
在Python中实现Matlab.使用以下内容的Matlab代码的确切替代品是什么scipy.signal.firwin()
:
demod_1_a = mod_noisy * 2.*cos(2*pi*Fc*t+phi);
d = fdesign.lowpass('N,Fc', 10, 40, 1600);
Hd = design(d);
y = filter(Hd, demod_1_a);
Run Code Online (Sandbox Code Playgroud) 我试图在Python中转换MATLAB代码.我不知道如何在Python中初始化空矩阵.
MATLAB代码:
demod4(1) = [];
Run Code Online (Sandbox Code Playgroud)
我试过Python
demod4[0] = array([])
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud) 我在Python中尝试使用Matlab代码
我的代码发出警告
/usr/lib/python2.7/dist-packages/numpy/core/numeric.py:235:ComplexWarning:将复杂值转换为实际丢弃虚部
返回数组(a,dtype,copy = False,order = order)
Python代码
demod_1_a=mod_noisy*2*cos((2*pi*Fc*t)+phi)
N=10
Fc=40
Fs=1600
d=firwin(numtaps=N,cutoff=40,nyq=Fs/2)
print(len(d))
Hd=lfilter( d, 1.0, demod_1_a)
print(len(Hd))
y2=(convolve(Hd,raised))/Convfac
print(len(y2))
y2=y2[(sa/2)-1:-sa/2]
print(len(y2))
demod_3_a=y2[(sa/2)-1::sa]
print(len(demod_3_a))
demod_1_b=-1*mod_noisy*2*sin((2*pi*Fc*t)+phi)
Hd2=lfilter(d,1.0,demod_1_b)
y3=(convolve(Hd2,raised))/Convfac
y3=y3[(sa/2)-1:-sa/2]
demod_3_b=y3[(sa/2)-1::sa]
#########3333
#Demod
demod=demod_3_a+(1j)*demod_3_b
print((demod))
plot(demod,'wo')
show()
Run Code Online (Sandbox Code Playgroud)
这段代码给了我结果但不是想要的结果.我想问这个警告会如何影响我的代码?什么是摆脱这个警告的解决方案.请帮助
我试图将Matlab代码转换为Python,当我转换一行时我遇到了问题.我是对还是不对?我不知道如何在Python中进行分配.
Matlab的:
for j=1:a
diff_a=zeros(1,4);
diff_b=zeros(1,4);
for i=1:4
diff_a(i)=abs(ssa(j)-check(i));
diff_b(i)=abs(ssb(j)-check(i));
end
[Y_a,I_a]=min(diff_a);
end
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
for j in arange(0,a):
diff_a=zeros(4)
diff_b=zeros(4)
for i in arange(0,4):
diff_a[i]=abs(ssa[j]-check[i])
diff_b[i]=abs(ssb[j]-check[i])
[Y_a,I_a]=min(diff_a)
Run Code Online (Sandbox Code Playgroud)
最后一行给出了这个错误:
TypeError:'numpy.float64'对象不可迭代
问题出在最后一行.diff_a
是一个复数数组.很抱歉没有提供整个代码(它太大了).
我试图将Matlab代码转换为Python,但是当我在数组中添加零时,我收到一个错误.
Matlab代码:
N_bits=1e5;
a1=[0,1];
bits=a1(ceil(length(a1)*rand(1,N_bits)));
bits=[0 0 0 0 0 0 0 0 bits];
Run Code Online (Sandbox Code Playgroud)
Python代码:
a1=array([0,0,1])
N_bits=1e2
a2=arange(0,2,1)
## Transmitter ##
bits1=ceil(len(a2)*rand(N_bits))
bits=a1[array(bits1,dtype=int)]
bits=array([0,0,0,0,0,0,0,0, bits])
Run Code Online (Sandbox Code Playgroud)
我在最后一行收到错误:
Error: bits=array([0,0,0,0,0,0,0,0, bits]) ValueError: setting an array element with a sequence.