行列計算
行列は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