読者です 読者をやめる 読者になる 読者になる

hidden no source

継ぎ足し使う

【Python】勤怠管理というか,時刻記録

研究室生活の崩壊

ちょっと就活と研究のバランスが崩壊してる.
これで何が起こったかというと私の起床時間がぶっ飛んだ.

1 昼に就活で時間使う.つかれる.
2 帰ったら研究作業でもやるか
3 夜通し研究・徹夜
4 生活バランスぶっ壊れ
5 研究室への脚が遠のく,若しくは行っても午後
6 午後からだとあまり研究できずダラダラ過ごす
7 ゼミで叱られる.


こんな感じよく分かる悪循環である.

治療

そこで,とりあえず自分の研究室生活の軌道から直して行きたいというふうに考えた

まず研究室についた時刻を記録する.
(ついでに研究室を出る時刻も記録したい)
でそれを可視化すればどういう生活になってるんじゃないかと…甘いか?


コアタイムがないことにやりたい放題は良くないからね.


んで,時刻記録に作ったのがこれ

# -*- coding:utf-8 -*- #
import numpy as np
import glob, os
import pylab
from datetime import datetime 



a = datetime.now().strftime("%Y/%m/%d %H:%M:%S")

print a


def get_filelist():
    #------------------------------+
    #ファイル名取得-ソート
    #------------------------------+
    global files,name
    files = glob.glob('*.csv')
    name  = []
    for x in files:
        no,ext = os.path.splitext(x)
        name.append(str(no))#[name]へ取得したファイル名リスト[no]から取得して格納していく
    
    name.sort()
    print files
    for x in xrange( len(name) ):
        name[x] = str(name[x]) + '.csv'
        #show()

get_filelist()


for file in xrange(len(files)):
    filename = str(files[file])
    x = np.genfromtxt(filename,delimiter = "\t", unpack = True, dtype ='S19' ) 

x = np.append (x,a )
print x ,type(x)

np.savetxt("Att.csv",x, fmt = "%s" )


こいつのあるディレクトリからcsvとか探して(一回目は作らないで走らせても生成してくれます)単純にクリックした時刻を記録する.
エクセルとかでアホなことするよりは楽.
pythonだからmatplotlibとか使えば後でグラフにも残せるからまあ…


しばらく使ってみてどうなるかなあ…

就活つらいけど,この間,面接の前室で何聞かれるか教えてくれ自分の番になるとガッツポーズで送り出してくれる人に会った.
本当に色々なひとが関わっていると強く感じた.もう少し頑張ります.

【Python】f特抽出

正しくいうと抽出なんかじゃなくてピーク値を抽出するっていうプログラム

#coding:utf-8
import wave
import numpy as np
import scipy.fftpack
from scipy import signal
from pylab import *
import glob, os
#----------------------------------

fs = 16384#wf.getframerate()  # サンプリング周波数
start = 0  # サンプリングする開始位置
N =16384 #65536    # FFTのサンプル数



def get_filelist():
    #------------------------------+
    #ファイル名取得-ソート
    #------------------------------+
    global files,name
    files = glob.glob('*.csv')
    name  = []
    for x in files:
        no,ext = os.path.splitext(x)
        name.append(str(no))#[name]へ取得したファイル名リスト[no]から取得して格納していく
    
    name.sort()
    print files
    for x in xrange( len(name) ):
        name[x] = str(name[x]) + '.csv'

def get_peak(amp):
    #------------------------------+
    #ピーク値の抽出を行う.
    #in:FFT後の音圧レベル情報
    #out:ピーク位置の音圧レベル,周波数値を抜き出したリスト(総データ数は対応)
    #-------------------------------+
    frq_result = []
    lvl_result = []
    for i in xrange(2,len(amp) -1):
        if amp[i] > amp[i+1] and amp[i] > amp[i-1]:
            lvl_result.append( amp[i] )
            frq_result.append( freqList[i])

    print(len(lvl_result),len(frq_result) )
    return (lvl_result, frq_result)

get_filelist()


all_lvl = []
all_frq = []
for file in xrange(len(files)):
    filename = str(files[file])
    A,x = np.genfromtxt(filename,delimiter = ",",skiprows = 2,unpack = True ) 
    
    print file, len(files)
    if __name__ == "__main__" :
        global freqList
        X = np.fft.fft(x[start:start+N])  # FFT
        
        freqList = np.fft.fftfreq(N, d=1.0/fs)  # 周波数軸の値を計算
        amplitudeSpectrum = [20*log10 (np.sqrt(c.real ** 2 + c.imag ** 2)) for c in X]#パワースペクトルへ変換[dBSPL]  # 振幅スペクトル
        phaseSpectrum = [np.arctan2(int(c.imag), int(c.real)) for c in X]    # 位相スペクトル

        #----ピーク取得-----+
        #ピーク値をストックする
        lvl, frq = get_peak(amplitudeSpectrum)
        for x in xrange(len(lvl)):
            all_lvl.append( lvl[x] )
            all_frq.append( frq[x] )
            #print x

        #------図表書き出し------#
        #all_lvl,all_frqにピーク値をストック
        #最終ループですべて書き出す
        if file == len(files)-1 : #x ==( len( lvl)-1 ):
            plt.figure(figsize =(4,3))
            #subplot(211)
            plt.scatter(all_frq, all_lvl,s = 2,c = 'b', marker = 'o')
            axis([0, fs/2, 0, 100])
            xlim([10,500])
            ylim([0,50])
            xscale("log")
            plt.savefig('test.png'     ,format = 'png', dpi=300)
            #plt.savefig('peakpoint.png', format = 'png',dpi = '300' )
        
        del lvl[:],frq[:] #値をクリアして次のループへ

ディレクトリに沢山の時系列データ(今回は**.csv)がある場所で使うと,個数分だけループをはじめて,1つ読み込んでFFT処理,ピーク値をプロット,また1つ読み込んでFFTしてピークとってきてさっきの絵にプロット…というプログラム

(実際の挙動は一回一回プロットしてるとアホらしいのでプロットすべき点をストックさせて一気にプロットする)


何が便利かというと,ある室に関して,沢山の受音点データがある時これで周波数特性のピーク値をプロットするとピークがどの周波数にあるか点で見ることができる.

f:id:coupe-glass:20170514000526p:plain:w400:h300
今回は361点分の受音データ(全て同じ室)を処理したんだけどこんな感じで30Hz付近にピークが集まってる=定在波が立つかなっていうおおよその検討がつけられるようになった.


半年ぐらい前に作るべきシステムだったんだけどPythonの知識がなかった….

【就活】ウン

しんどい.
どう考えてもしんどい.

本命第一志望の企業の二次面接.
終わって数週間経つ.GWを挟んでるから連絡が遅いのか,面接落ちてサイレントされてるからだめなのか.
判断できないから動くに動けない.駄目なら駄目で踏ん切りをつけるしかないとわかっていても心血注いだ企業なだけに心がしんどい…



宙ぶらりん.死んだのか,死んでいないのか判別できない状態.もうだめなんだろうな.つらい.
これからどうするか.持ち駒も少ない中で研究も控えてる.
今就活を行って今後がどうなるのか不安しかない.
数ヶ月後の自分はこの日記をどういう気持で読んでるのか,それだけが気になる.

【grasshopper】6日目

よくみるパネルに穴を開けるのに挑戦
したけどやっぱり一筋縄じゃ行かねえわ返り討ち.
f:id:coupe-glass:20170501045947p:plain


パネルに割るのはコンポーネントでできるのね.楽.
なので,あとからやる必要があるのは割ったパネルの中にどうやって線を生成するか…
ボロノイとかなら先に領域生成して点回りでオフセットしてってかんじでやるのかな.いかんせん課題は多い.
f:id:coupe-glass:20170501045949p:plain

【grasshopper】5日め【最終日】

f:id:coupe-glass:20170430232642p:plain
飲みに行ってたからという体のいい言い訳をする.
最終日で一日遅れてしまった.悲しいかな.

mapperを使ってみた.4本のラインと対応させないとサーフェスが結べずずれるらしい.

f:id:coupe-glass:20170430232649p:plain

少しだけ有機的な形づくりに近づいたし,連続面で空間構成を作るっていう目標は達成できたのでよしとする.

そんな深い部分じゃないけど色々試行錯誤しながら形を作るっていうのはやっぱり楽しい.
リストを少しずつ扱えるようになったのは今週の収穫かな.


一方で結局研究を疎かにしてしまって何も進んでいないので,取り返さないといけないところです.

【grasshopper】4日目

f:id:coupe-glass:20170428014408p:plain
垂れ幕連続をつくりたい.


f:id:coupe-glass:20170428014419p:plain


f:id:coupe-glass:20170428014413p:plain
splitでリストを分けて,4本の線をグラフトでつなぐ,それをsrfで面生成…

みたいな感じで作ってる
何パターンも高さを変えられたらなあと思うんだけど,いまいちピンとこない.悔しい.

【grasshopper】3日目

f:id:coupe-glass:20170427014945p:plain
flatten で完全に統合したリストを分割する手法がすぐ見当たらなあくて辛かった.
pathmapper 使ったら分割できるらしく,活用したらできた.

f:id:coupe-glass:20170427014950p:plain
角フィレットを積み上げられるようになったので応用させられるかも.
今日はリストと,ナーブス使った曲線生成を学べた.回収が多かったと思う.

資料を読めるようになってきた.