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

旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

C#

【WPF】 RadioButtonをユーザーが触れないようにする

IsHitTestVisibleとIsTabStopをFalseに設定します。IsHitTestVisibleのみをFalseにした場合、Tabキーを押してRadioButtonに移動し、スペースキーを押すとRadioButtonをチェックできてしまうため、両方Falseにする必要があります。 <RadioButton Content="ReadOnlyRadioButton" IsHitTestVisible="False" IsTabStop="False"/></radiobutton>

【OpenCvSharp】 ポインタを利用してMatクラスの画素にアクセスする

OpenCvSharpのMatクラスを走査する時、いつもAtメソッドを利用していたのですが、ポインタを使って走査する方法を見つけたのでメモします。 gist.github.com リンク先はカラー画像に対して走査していますが、自分はグレースケール画像を走査したかったので、…

【WPF】 時間のかかる処理を実行する時にアニメーションを表示する

アプリケーションで時間のかかる処理を実行している時に「今処理を実行中ですよ」とユーザーに知らせたい時、実行中に表示するアニメーションがあると便利です。幸いアニメーション自体は既に作成してくれている人がいるので、それを拝借します。 www.trilli…

【C#】 平滑化スプラインを実装する

波形に乗ったノイズを取り除く方法はいくつかあるのですが、今回は平滑化スプラインを実装します。ソースはどこかの論文に書いてあったものをC#に移植したものです。まずは平滑化スプラインを行うSplineSmoothingクラスを作成します。 public class SplineSm…

【WPF】 二次元配列をWriteableBitmapに変換する

二次元配列をWriteableBitmapに変換する方法をメモします。グレースケール画像をbyteの二次元配列で表現しており、これをImageクラスに表示するためWriteableBitmapに変換したかった、というのが動機になります。 using System.Windows.Media; using System.…

【C#】 二次元配列を一次元配列に変換する

C#

タイトルの通り二次元配列を一次元配列に変換する方法です。 using System.Linq; var array2dim = new byte[,] { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } }; // array1dimは{0, 1, 2, 3, 4, 5, 6, 7, 8}となる byte[] array1dim = array2dim.Cast<byte>().ToArray(</byte>…

【WPF】 画像の差分を計算してWPFのImageに表示したい

タイトルの通り画像の差分を計算してWPFのImageに表示する必要があったためメモします。画像の差分を取るためにはOpenCvのC#用ラッパーであるOpenCvSharpを利用すればすぐに済むため、結局OpenCvSharpのMatクラスをWPFのImage.Sourceにどう入れるか、という…

【WPF】Ellipseの外側と内側に異なる透明度を指定する

WPFのEllipseの外側(Stroke)と内側(Fill)に異なる透明度を適用する方法をメモします。具体的には内側だけある透明度を適用したかったのですが、EllipseのOpacityを設定すると、StrokeもFillも透明になってしまいます。この問題はStrokeとFillに異なるBru…

【C#】 配列の中身ををシャッフルする

C#

using System.Linq; int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] shuffledArray = ary.OrderBy(i => Guid.NewGuid()).ToArray(); 参考サイト: 配列やコレクションをシャッフルする(ランダムに並び替える): .NET Tips: C#, VB.NET

【C#】 ニュートン法を使って連立非線形方程式の解を求める

ニュートン法を使って連立非線形方程式の解を求めます。ニュートン法を使って連立非線形方程式の解を求める場合、ヤコビアンの計算が必要となり多くの計算量が必要となってしまいます。このため、ここではニュートン法の変種を使って連立非線形方程式の解を…

【C#】 ラグランジュの未定乗数法による制約条件付き最適化

という制約条件付きで、関数を最小化する、という問題をラグランジュの未定乗数法を使って解きます。ここでは例として、以下の制約条件下で目的関数を最小化するを探す、という問題を解きます。 目的関数 : 制約条件1: 制約条件2: 解き方は以下の手順に…

【C#】 ペナルティ法による制約条件付き最適化

制約条件が付いた最適化問題をペナルティ法を使って解いてみます。ここでは例として 制約条件: を満たす上で 目的関数: の最小値を与えるを求めます。 まずは目的関数、制約条件、ペナルティ係数から新しい目的関数を作成するクラスを作成します。 public …

【C#】 共役勾配法による多変数関数の最適化

共役勾配法を利用して多変数関数の最適化を行うクラスを実装します。共役勾配法ではここ(【C#】 勾配ベクトルを計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したGradientというクラスを利用します。 public class ConjugateGradientMethod…

【C#】 ニュートン法を使って非線形方程式の解を求める

ニュートン法を使ってを満たすを計算します。まずはニュートン法を実装しますが、ここ(【C#】 微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したDerivativeというクラスを利用します。 public class NewtonMethod1D { /// <summary> /// ニュ</summary>…

【C#】 最急降下法による多変数関数の最適化

最急降下法を利用して多変数関数の最適化を行うクラスを実装します。最急降下法ではここ(【C#】 勾配ベクトルを計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したGradientというクラスを利用します。 public class SteepestDescentMethodMV…

【C#】 黄金分割法による最適化

今回は黄金分割法を使って一変数関数の最適化を行う方法をメモします。 public class GoldenSectionSearch { private static readonly double _ratio = (3.0 - Math.Sqrt(5.0))/2.0; /// <summary> /// 黄金分割法による最適化を行うメソッド /// </summary> /// <param name="f">一変数関数</param> /// <param name="minX"></param>…

【C#】 最急降下法による一変数関数の最適化

最急降下法を利用して一変数関数の最適化を行うクラスを実装します。最急降下法ではここ(【C#】 微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したDerivativeというクラスを利用します。 public class SteepestDescentMethod1V { pri…

【C#】 勾配ベクトルを計算するクラス

今回は偏微分を計算するクラス(【C#】 偏微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)を使って 勾配ベクトルを計算するクラスを実装します。 public class Gradient { private const double _h = 1e-5; public static double[] Compute(Fu…

【C#】 偏微分を計算するクラス

偏微分を計算するクラスを作成します。 public class PartialDerivative { private const double _h = 1e-5; /// <summary> /// 偏導関数を計算するメソッド /// </summary> /// <param name="f">関数</param> /// <param name="index">偏微分を行うインデックス</param> /// <returns>fの偏導関数</returns> public static Func<double[], double> Compute(Func</double[],>

【C#】 微分を計算するクラス

微分を計算するクラスを作成します。まずはクラスのソースコードです。 public class Derivative { private const double _h = 1e-5; /// <summary> /// 導関数を計算するメソッド /// </summary> /// <param name="f">関数</param> /// <returns>fの導関数</returns> public static Func<double, double> Compute(Func<double, double> f) { return x => (f(</double,></double,>…