2016-07-06 1 views
1

Matplotlib를 사용하여 Matlab의 기존 스펙트로 그램을 파이썬 코드에 통합하려고합니다. 그러나 창 값을 입력 할 때 문제가 있습니다. Matlab에서 값은 스칼라이지만 Matplotlib에는 벡터가 필요합니다. 이게 왜 그렇게?Matlab 스펙트로 그램과 matplotlib 스펙 그램의 차이점은 무엇입니까?

+1

스칼라 값을 배열별로 벡터로 변환해야합니다. Numpy가 문제를 해결하는 데 도움을 줄 수 있습니다 – Deadpool

답변

1

인수가 다르게 구성되어 있습니다.

matplotlib에서 창 크기는 NFFT 인수를 사용하여 지정합니다. 한편, window 인수는 크기가 아닌 창 자체를 지정하기 위해 입니다. 따라서 MATLAB과 마찬가지로 window 인수는 벡터를 허용합니다. 그러나 MATLAB과 달리 임의 길이의 벡터를 사용하고 같은 크기의 다른 벡터를 반환해야하는 함수도 허용합니다. 이렇게하면 벡터 대신 창에 함수를 사용할 수 있습니다. 다양한 MATLAB NFFT 인수가하기 matplotlib pad_to 인수에 해당하면서

그래서 MATLAB 약관에 넣어의 MATLAB window 인수하기 matplotlib에서 windowNFFT 인수로 분할된다.

이유는 윈도우와 윈도우 크기를 독립적으로 지정하면 window (실제로 기본값 임)의 인수로 함수를 사용할 수 있습니다. 이것은 MATLAB 인수로는 불가능합니다.

파이썬에서 함수는 MATLAB의 경우가 아닌 일류 객체입니다. 따라서 함수를 MATLAB에 비해 Python의 다른 함수에 대한 인수로 사용하는 것이 훨씬 더 일반적입니다. 파이썬은 또한 이름으로 인자를 지정할 수있게 해줍니다. MATLAB은 실제로 그렇게하지 않습니다. 따라서 MATLAB에서 입력에 따라 다른 일을하는 인수를 갖는 것이 훨씬 더 일반적입니다. 반면 Python의 비슷한 함수는 여러 독립 인수로 나누는 경향이 있습니다.

+0

Fs와 상관 관계가 있습니까? matplotlib의 F도 x 축에 영향을 미친다는 것을 알았습니다. (Fs를 2^-1 또는 2^-10으로 설정하면 이미지가 변경되지 않고 두 비늘 만 변경됨) –

+0

'Fs '는 샘플링 빈도입니다. 시간 점과 주파수의 간격을 결정합니다. MATLAB 버전의 F가 X (시간) 및 Y (주파수) 축을 변경하지 않으면 놀랄 것입니다. – TheBlackCat

+0

어떻게 낮은 주파수를 확대하고 더 높은 주파수를 잘라낼 수 있습니까? –

1

Matlab의 값은 창 크기를 나타내는 스칼라이며 Matlab은 기본적으로 해밍 창을 사용합니다. Window 인수는 벡터를 받아들이므로 원하는 모든 윈도우 함수를 전달할 수 있습니다.

+0

matplotlib에서 창 크기를 지정하는 방법이 있습니까? –

+0

@JoeBernstein : 내가 대답했듯이,'NFFT' 논쟁을 사용하십시오. – TheBlackCat

+0

@JoeBernstein, 네, @ TheBlackCat이 말했듯이, 당신은'NFFT' 인수를 사용할 수 있습니다. 또한,'matplotlib'은 한 창 (Hann window)의 기본값을 사용하기 때문에,이 인수에 아무 것도 전달하지 않으면 데이터가 분석되기 전에 한 창으로 곱해질 것입니다. 이를 변경하려면, 입력 데이터의 동일한 크기로 창을 작성하는 내장 함수를 사용할 수 있습니다. 자세한 정보를 보려면 여기를 클릭하십시오. http://matplotlib.org/api/mlab_api.html#matplotlib.mlab.specgram – nevos

관련 문제