> There may be a better way, but:: > > alltrue(isreal(x)) > > Would work. As would: > > not sometrue(x.imag) > > In the above test you are already negating the test, so you could just > drop the not. >> and if so is >> there a way to extract the(a + ib) because the absolute value of a >> complex >> number is like the pythagorean therom on a and b?
what i was looking for in the above is that when I looked up the abs(complexnum) i saw that the abs() of a complex num is (a^2 + b^2)^.5 so i was asking for a way to do this because i was assuming that i was going to have to parse through the array in a for loop and if i found a complex number then get the a and b to do the pythagorean theorom but it seems i will not have to do this, as for the matlab code see below > I'm not entirely sure what you are looking for here, but x.imag and > x.real will give you the real and imaginary parts. abs(x) will return > the magnitude of x whether x is real or complex. x.conj() will return > complex conjugate. > > I'm somewhat suspicious of that matlab code. The code given is > discontinuous as you cross the negative real axis. Does the result > subsequently get squared or something? I'm guessing that either the > matlab code is doing extra work, or there are some hidden assumptions > (all values are in the positive real half-plane). Or some such. In > either case, you'd probably be OK just skipping the check for realness > and always taking the absolute of array. I can't say for sure without > more context though. > > -tim this is taken out of a program i am converting from matlab to python, so I can not explain all of it, it would take forever, BUT COEmix, the input, is equal to a different arrays 0 and 2 rows added together. So with that being said, it can not be empty, and must be actual numbers. The reason I am "scared" to remove the isreal statement that i asked about is because the array before hand has values that are taken from square roots. I do not know if these could ever end up being complex and I am meeting with the head of this project tomorrow to discuss it, but you asked so i thought i would share. function [pospeakind,negpeakind]=peakdetect(COEmix) if ~nargin COEmix=input('enter COEmix vector or return for empty outputs\n'); if isempty(COEmix) pospeakind=[]; negpeakind=[]; return end end sizsig=size(COEmix); while isempty(COEmix)|~isnumeric(COEmix)|~all(all(isfinite(COEmix)))... |length(sizsig)>2|min(sizsig)~=1 COEmix=input(['COEmix is empty, nonnumeric, nonfinite, or nonvector:\nenter '... 'finite vector or return for empty outputs\n']); if isempty(COEmix) pospeakind=[]; negpeakind=[]; return end sizsig=size(COEmix); end if ~isreal(COEmix) COEmix=abs(COEmix); end if ~any(COEmix-COEmix(1)) pospeakind=[]; negpeakind=[]; disp('constant COEmix graph suppressed') return end ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpy-discussion