FIRフィルタの設計by python

FIRフィルタの設計by python

○firwinの使い方
例)
scipy.signal.firwin(numtaps, cutoff, width=None, window='hamming', pass_zero=True, scale=True, nyq=1.0)

numtaps:タップ数
cutoff:カットオフ周波数
window:窓関数
pass_zero:
nyq:ナイキスト周波数
参考:https://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.signal.firwin.html

○scipy.absoluteの使い方
NumPy で絶対値 (負の数は正の数として出力、正の数は正の数として出力) を求めるには、np.absolute()があります。

参考https://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.absolute.html

○scipy.fft使い方

https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.fftpack.fft.html

○unwrapとは
連続だったデータもラップ(wrap)されて位相のジャンプが現れる。 これをUnwrapするたのもの
参考retrofocus28.blogspot.jp

#coding:utf8
import scipy
import scipy.signal as ss
from matplotlib import pyplot as pp
import numpy as np
import scipy.signal
from pylab import *

N = 221
fc = 1000.
fc2 = 3000.
Fs = 44100.

#%% LPF
h = ss.firwin(numtaps=N, cutoff=fc/(Fs/2.), window='blackman', pass_zero=True)

#%% HPF
f = ss.firwin(numtaps=N, cutoff=fc/(Fs/2.), window='blackman', pass_zero=False)

#%% BPF
e = ss.firwin(numtaps=N, cutoff=scipy.array([fc/(Fs/2.), fc2/(Fs/2.)]), window='blackman', pass_zero=False)

#%% BEF
h = ss.firwin(numtaps=N, cutoff=scipy.array([fc/(Fs/2.), fc2/(Fs/2.)]), window='blackman', pass_zero=True)

#%% 表示
f = scipy.array(range(0, N)) * Fs / scipy.double(N)
tf = scipy.fft(h)
mag = scipy.absolute(tf)
phase = scipy.unwrap(scipy.angle(tf)) * 180. / scipy.pi

figure(1)
subplot(3,1,1)
pp.plot(h)
grid('on', 'both')
subplot(3,1,2)
pp.semilogx(f, mag)
xlim([20, 20000])
ylim([0, 1.2])
grid('on', 'both')
subplot(3,1,3)
pp.plot(f, phase)
xlim([0, 20000])
grid('on', 'both')

figure(2)
subplot(3,1,1)
pp.plot(f)
grid('on', 'both')
subplot(3,1,2)
pp.semilogx(f, mag)
xlim([20, 20000])
ylim([0, 1.2])
grid('on', 'both')
subplot(3,1,3)
pp.plot(f, phase)
xlim([0, 20000])
grid('on', 'both')

figure(3)
subplot(3,1,1)
pp.plot(e)
grid('on', 'both')
subplot(3,1,2)
pp.semilogx(f, mag)
xlim([20, 20000])
ylim([0, 1.2])
grid('on', 'both')
subplot(3,1,3)
pp.plot(f, phase)
xlim([0, 20000])
grid('on', 'both')

plt.show()
||

参考

OpenCVでpng画像アフィン変換(せん断)by python

概要

alphaチャンネルを使って
背景透過にしたrev2を用意させ

png画像を背景透過させたままアフィン変換を行った。

コード

import numpy as np
import cv2

# 画像読み込み(alphaチャンネル有り)
src_mat = cv2.imread("001.png", cv2.IMREAD_UNCHANGED)
print(src_mat.shape) # 32,32,4

# 画像サイズの取得(横, 縦)
size = tuple([src_mat.shape[1], src_mat.shape[0]])

# dst 画像用意
dst_mat = np.zeros((size[1], size[0], 4), np.uint8)

# 画像の中心位置(x, y)
center = tuple([int(size[0]/2), int(size[1]/2)])

# 回転させたい角度
rad = np.pi / 10
# x軸方向に平行移動させたい距離
move_x = 2
# y軸方向に平行移動させたい距離
move_y = 0

matrix = [
[1, np.tan(rad), move_x],
[0, 1, move_y]
]

affine_matrix = np.float32(matrix)

# 回転変換行列の算出
#rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)

# アフィン変換
img_dst = cv2.warpAffine(src_mat, affine_matrix, size, dst_mat,
flags=cv2.INTER_LINEAR,
borderMode=cv2.BORDER_TRANSPARENT)
# 表示 cv2.imwrite("dst.png", img_dst)

参考

skattun.hatenablog.jp

3分でECCUBEを使った会員制ECサイト化

1.ここからプラグインをダウンロード&install

https://drive.google.com/file/d/0B0D4RKG_piu8clVrcC10ckF4NVU/view

 

2.非ログイン状態でも表示可能とするページの設定等を行う

MyCloseSite.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function preProcess(LC_Page $objPage) {
    if (strstr(get_class($objPage), "Admin") != ""
            || strstr(get_class($objPage), "Upgrade")) {
        // 管理画面のためアクセスOK
        return;
    }
 
    if (TOP_URLPATH == $_SERVER["REQUEST_URI"]) {
        // TOPページはリダイレクトしない
        return ;
    }
 
    $objCustomer = new SC_Customer_Ex();
    if($objCustomer->isLoginSuccess(true)) {
        // 会員はアクセス可能
        return ;
    }
 
    $filename = $objPage->arrPageLayout['filename'];
         
    // 許可するページを指定
    $arrAccessPage = array(
        'mypage/',
        'entry/',
        'login',
        ''
    );
         
    foreach($arrAccessPage as $pagename) {
        if (strstr($filename, $pagename) != "" || $filename == $pagename) {
            return;
        }
    }
         
    header('Location: ' . TOP_URLPATH);
    exit;
}

以上。

参考

systemkd.blogspot.jp

DCGANやってみた

MNIST手書き数字画像を使った実験(簡単)

git clone

git clone https://github.com/kyloon/dcgan.git




Training:

python dcgan.py --mode train --batch_size <batch_size>

python dcgan.py --mode train --path ~/images --batch_size 128

Image generation:

python dcgan.py --mode generate --batch_size <batch_size>

python dcgan.py --mode generate --batch_size <batch_size> --nice : top 5% images according to discriminator

python dcgan.py --mode generate --batch_size 128

cuda周辺環境を整える

1.既存ドライバ等の確認

dpkg -l | grep nvidia
dpkg -l | grep cuda

2.cuda,nvidiaのアンインストー

sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*

 

3.ドライバーのインストー

sudo apt-get install nvidia-3**

4.CUDA8.0のインストー

https://developer.nvidia.com/cuda-downloads より


sudo dpkg -i cuda-repo-ubuntu1604_8.0.*_amd64.deb
sudo apt update
sudo apt install cuda

5.setting path

echo -e "\n## CUDA and cuDNN paths"  >> ~/.bashrc
echo 'export PATH=/usr/local/cuda-8.0/bin:${PATH}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
source ~/.bashrc # CUDAのパスが書き込まれた~/.bashrcを読み込む。

6.sudo reboot

sudo reboot

7.nvcc -V

nvcc -V

8.cudnn

cuDNN 5.1 for CUDA 8.0をダウンロードする(アクセスするにはメンバー登録が必要)。

https://developer.nvidia.com/rdp/cudnn-download
よりダウンロード
tar xzvf cudnn-8.0-linux-x64-v5.1.tgz 
sudo cp -a cuda/lib64/* /usr/local/cuda-8.0/lib64/
sudo cp -a cuda/include/* /usr/local/cuda-8.0/include/
sudo ldconfig

環境

ubuntu16.04LTS
GTX-1080