src/dim.js
/**
* Get Array dimensions
*
* @export
* @param {Array} x
* @returns {Array}
* @example
*
* dim([[1, 2, 3], [1, 2, 2]])
* // [2, 3]
*/
export default function(x) {
switch (x.constructor.name) {
case 'Complex':
return cdim(x);
case 'Sparse':
return sdim(x);
default:
return dim(x);
}
}
function cdim(x) {
if (x.re) {
return dim(x.re)
} else {
return dim(x.im)
}
}
function sdim(x) {
return [x.col.length-1, x.col.length-1];
}
function dim (x) {
if (typeof x === 'object') {
if (typeof x[0] === 'object') {
if (typeof x[0][0] === 'object') {
throw new Error('mathlab: only support two demitional matrix for now')
}
return [x.length, x[0].length]
}
return [x.length]
}
return []
}