カテゴリー
学術

微分できない

箇所を抽出する事で対象の特徴をとらえることができるかもしれない。(2018.12.20)

カテゴリー
学術

TIN Polygon

物体をTIN Polygon化しその三角形を統計的に解析すれば認識に使えるかもしれない。(2018.12.6)

カテゴリー
学術

フラクタル次元と認識

ボックス法によりフラクタル次元を求めトポロジーと組み合わせれば認識に使えるかもしれない。(2018.12.3)

カテゴリー
学術

特異点

集団→同期→同期していない→特異点(2018.11.21)

カテゴリー
学術

ジェネレーター1

電子回路を作る時は何かと発振器が必要になります。

様々な信号発生器がありますが可聴範囲内であればパソコンでできそうです。

パソコンなら細かな波形をデザインできるのでかえって専用機のジェネレーターよりも良いかも。

例えばWindows PCで以下のようなコードを実行します。

#include <iostream>
#include <string>
#include <windows.h>
#include <MMSystem.h>
#include <math.h>

#pragma comment (lib, "winmm.lib")

int main() {

    WAVEFORMATEX wfe;
    static HWAVEOUT hWaveOut;
    static WAVEHDR whdr;
    static LPBYTE lpWave;
    int i, len, start, end;
    int terms = 1;
    int sampling = 44100;
    int frequency = 441;

    wfe.wFormatTag = WAVE_FORMAT_PCM;
    wfe.nChannels = 2;
    wfe.wBitsPerSample = 8;
    wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8;
    wfe.nSamplesPerSec = sampling;
    wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * wfe.nBlockAlign;
    waveOutOpen(&hWaveOut, WAVE_MAPPER, &wfe, 0, 0, CALLBACK_NULL);
    lpWave = (LPBYTE)calloc(wfe.nAvgBytesPerSec, terms * wfe.nChannels);

    // 立ち上がりは出力を0にする
    for (i = 0; i < sampling * terms * wfe.nChannels; i++) {
        lpWave[i] = 128;
    }

    len = sampling / frequency; 

    // 最初の10サイクルは出力しない
    start = sampling / frequency * 10;
    // 8サイクル波形を出力する
    end = start + sampling / frequency * 8 * wfe.nChannels;

    double d = 360.0 / len;
    double pi = 3.14159265359;
    for (i = start; i < end; i++) {
        if ((i % 2) == 0) {
            // 方形波 Left
            if ((i/2) % len < len / 2) {
                lpWave[i] = 228;
            }
            else {
                lpWave[i] = 28;
            }
        }
        else {
            // 正弦波 Right
            lpWave[i] = (BYTE)(100.0 * sin(d * ((i / 2) % len) / 180.0 * pi) + 127.5);
        }
    }

    whdr.lpData = (LPSTR)lpWave;
    whdr.dwBufferLength = wfe.nAvgBytesPerSec * terms;
    whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr.dwLoops = 1;

    waveOutPrepareHeader(hWaveOut, &whdr, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut, &whdr, sizeof(WAVEHDR));

    char str[128];
    std::cout << "hello, world\n";
    std::cin >> str;

}

 

パソコンのライン出力をそのままマイク入力に接続しAudacityで表示すると、

パソコンジェネレーター出力をAudacityで表示
パソコンジェネレーター出力をAudacityで表示

のようになります。

左チャンネルは、方形波、右チャンネルは正弦波の出力ができました。2CHファンクションジェネレータの完成です。

カテゴリー
学術

確率的ニューラルネットワーク

PNN : Probabilistic Neural Network

殆どのアルゴリズムは逐次処理ですがPNNは完全な並列処理アルゴリズムです。(20191031)

ChatGPTにこれは何か聞いてみた。

User
確率的ニューラルネットワークとは何ですか。

ChatGPT
確率的ニューラルネットワークは、ニューラルネットワークの一種で、確率的な要素を含んでいるものを指します。つまり、入力から出力へのマッピングを決定する際に、確率的な処理を行い、確率的な出力を生成することができます。

確率的ニューラルネットワークは、一般にディープラーニングや深層学習の分野で使用され、特に認識や分類、画像処理、自然言語処理などのタスクに適しています。確率的ニューラルネットワークは、確率的な勾配降下法(SGD)やモンテカルロ法などのアルゴリズムを使用して、最適なパラメーターを学習することができます。

確率的ニューラルネットワークには、多層パーセプトロン(MLP)、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)などがあります。例えば、CNNは画像処理タスクに適しており、RNNは自然言語処理に適しています。

確率的ニューラルネットワークの利点は、過学習を抑制し、一般化能力を向上させることができることです。また、入力にノイズが含まれている場合でも、確率的な出力を生成することで、ノイズの影響を減らすことができます。ただし、学習に時間がかかる場合があるため、より高速なアルゴリズムが必要な場合があります。

カテゴリー
学術

近似を計算

大域→中域→小域→詳細の順に計算する。

1960年代、PNN計算資源の制限のため近似に関する研究が盛んに行われたが計算機の高度化により無駄になってしまった。(20181030)

カテゴリー
学術

多次元の二次元投影

多次元のデータを二次元に投影する事により計算量が減るかもしれない。(20181026)