行列計算

行列は2次元データオブジェクトです(Igor Pro は最大4次元までサポートします)。標準のデータ代入文を使って、行列に対して基本的な算術演算を実行できます。例えば:

Mat1= Mat2*Mat3 // element by element multiplication

MatrixOP を使えば、自然な構文で行列の乗算と内積を実行できます。例えば:

MatrixOp Mat1= Mat2 x Mat3  // matrix multiply

次の例は、行列 A と行列 B の要素ごとの乗算を計算し、そこから行列 C の逆行列と配列 D から作成された対角行列の積を引いた結果を求めます:

MatrixOP res=A*B-Inv(D) x Diagonal(D)

MatrixOP はフーリエ変換、Chirp-Z 変換、畳み込み、相関など配列ベースの演算をサポートします。例えば、以下のコードのようにカスケード変換と配列乗算を用いて円形畳み込みや非因果畳み込みを計算できます:

MatrixOP/O circConvolution=IFFT(FFT(fx,0)*FFT(rect,0),0)
MatrixOP/O acausalConvolution=IFFT(FFT(fx,0)*FFT(rect,0),4)

よりコンパクトな構文を使っても、同じ結果を得られることは明らかです:

MatrixOP/O circConvolution2=Convolve(fx,rect,0)
MatrixOP/O acausalConvolution2=Convolve(fx,rect,4)

以下は MatrixOP でサポートされている関数のリストです:

数と算術 e, inf, Pi, nan, maxAB, mod.
三角関数 acos, asin, atan, atan2, cos, hypot, phase, sin, sqrt, tan.
指数関数 acosh, asinh, atanh, cosh, exp, ln, log, powC, powR, sinh, tanh.
複素数 cmplx, conj, imag, magSqr, p2Rect, phase, powC, r2Polar, real.
丸めと切り捨て abs, ceil, clip, floor, mag, round.
変換 cmplx, fp32, fp64, int8, int16, int32, uint8, uint16, uint32.
データのプロパティ numCols, numPoints, numRows, numType, waveChunks, waveLayers, wavePoints.
データ特性 averageCols, crossCovar, chol, det, frobenius, integrate, intMatrix, maxCols, maxVal, mean, minVal, productCol, productCols, productDiagonal, productRows, sgn, sum, sumBeams, sumCols, sumRows, sumSqr, trace, varCols.
データ作成と抽出 beam, catCols, catRows, col, colRepeat, rowRepeat, chunk, const, getDiag, identity, insertMat, inv, layer, rec, subRange, subWaveC, subWaveR, tridiag, waveIndexSet, waveMap, zeroMat.
データ変換 diagonal, diagRC, normalize, normalizeCols, normalizeRows, redimension, replace, replaceNaNs, rotateChunks, rotateCols, rotateLayers, rotateRows, scale, scaleCols, setCol, setNaNs, setOffDiag, setRow, shiftVector, subtractMean, transposeVol.
時間ドメイン asyncCorrelation, convolve, correlate, limitProduct, syncCorrelation.
周波数ドメイン chirpZ, chirpZf, fft, ifft.
行列 backwardSub, chol, det, diagonal, diagRC, forwardSub, frobenius, getDiag, identity, inv, setOffDiag, tensorProduct, trace.
特別関数 erf, erfc, inverseErf, inverseErfc.
論理関数 equal, greater, within.
ビット関数 bitAnd, bitOr, bitShift, bitXOR, bitNot.

線形代数演算

Igor Pro® には、線形代数アプリケーション向けのコマンドと関数のグループが含まれています。便宜上、それらの名前は「Matrix」という単語で始まります。追加の行列数学機能は画像コマンドの下にグループ化されています。

Igor Pro は多くの線形代数演算に、業界で実績のある LAPACK ライブラリを使います。以下に、より一般的な MatrixXXX コマンドの一覧を示します:

MatrixDet 行列の行列式を返します。
MatrixEigenV 一般行列と対称行列のための固有値/固有ベクトルソルバーです。
MatrixGaussJ 線形方程式の解法のための Gauss-Jordan 行列インバーターです。Gauss-Jordan 法は線形代数で教わる初歩的な手法の1つですが、数値的安定性の観点からは推奨すべき手法ではありません。線形方程式はMatrixLinearSolve、MatrixLLS、または MatrixLUD を使って解くべきです。
MatrixGLM 一般 Gauss-Markov 線形モデル問題を解きます。
MatrixInverse 正方行列の逆行列または擬似逆行列を計算します。
MatrixLinearSolve 線形連立方程式 matrixA*X=matrixB を解きます。ここで matrixA は N 行 N 列の行列であり、matrixB は同じデータ型の N 行 M 列の行列です。
MatrixLinearSolveTD 線形連立方程式 matrixA*X=matrixB を解きます。ここで、matrixA は三対角行列であり、matrixB は同じデータ型の N 行 M 列の行列です。
MatrixLLS QR/LQ または特異値分解を使って、M×N matrixA を含む優決定または劣決定の線形方程式系を解きます。サポートされる型は、実数または複素数の単精度および倍精度数値です。
MatrixLUD 下三角行列(L)と上三角行列(U)のペアとなる正方行列に対して LU 分解を行います。
MatrixMultiply 最大 10 個の行列に対する行列乗算を実行します。より便利な表記のために MatrixOP も使用できます。
MatrixSchur 正方行列の Schur 分解を計算します。
MatrixSVD LAPACK ルーチンを使って特異値分解を実行します。
MatrixTranspose 行列の行と列をその場で入れ替えます。
MatrixDet 実数正方行列の行列式を計算します。
MatrixRank ユーザーが指定した条件数に従って行列のランクを計算します。
MatrixTrace 正方行列のトレースを計算します。

その他の行列演算:

MatrixConvolve:通常、画像処理アプリケーションにおいて、小さな2次元カーネルを大きな宛先行列と畳み込みます。

MatrixFilter:画像処理向けに、行列データをフィルタリングするための様々なオプションを備えています。組み込みフィルターには、平均化、エッジ検出、ガウスぼかし、勾配、メディアン、シャープニングなどが含まれます。

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More