DIAG
Updated 2023-10-19 13:24:11.957000
Syntax
SELECT [westclintech].[wct].[DIAG](
<@Matrix, nvarchar(max),>)
Description
Use the scalar function DIAG to return the vector of the diagonal of the string representation of a matrix. The diagonal is all the values in the matrix where the row number is equal to the column number.
DIAG expects a string representation of the matrix, with columns separated by commas and rows separated by semi-colons.
Arguments
@Matrix
a string representation of a matrix.
Return Type
nvarchar(max)
Remarks
The string representations of @Matrix must only contain numbers, commas (to separate the columns), and semi-colons to separate the rows.
Consecutive commas will generate an error.
Consecutive semi-colons will generate an error.
Non-numeric data between commas will generate an error
Non-number data between semi-colons will generate an error
To convert non-normalized data to a string format, use the Matrix2String or the Matrix2String_q function.
To convert normalized data to a string format, use the NMatrix2String or the NMatrix2String_q function.
Examples
Let’s assume that we had the following matrix, A, and we want to return diagonal.
A = [-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,40,-24,69,73,-20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,-34,-3;-41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10]
We could enter the following SQL to perform the calculation.
DECLARE @A as varchar(max);
SET @A
= '-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,40,-24,69,73,
-20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,-34,-3;
-41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10';
SELECT wct.DIAG(@A) as [Diagonal];
This produces the following result.
{"columns":[{"field":"Diagonal"}],"rows":[{"Diagonal":"-79;46;80;69;-6;11"}]}
The matrix does not have to be assigned to a variable before passed into the DIAG function; the string can be passed in directly.
SELECT wct.DIAG('-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,40,
-24,69,73,-20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,-34,
-3;-41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10')
as [Diagonal];
This produces the following result.
{"columns":[{"field":"Diagonal"}],"rows":[{"Diagonal":"-79;46;80;69;-6;11"}]}