Posts

Showing posts with the label matrix

Count "Islands" in a Matrix Using C#

Once in a while, a developer can be challenged by a new problem that puts him/her in the zone. This one happened recently and it's exhilarating! I have never encountered this problem before. Honest! And this is how I (eventually) solved it...

An Opinion on Artificial Intelligence

Data collection is highly valued. There are businesses focused on profiting from them. Data analysts and data scientists are the new careers to aim for. It's not just about big data anymore. It's now about really putting them to work, with the ultimate manifestation building what is known as artificial intelligence.

What Is Wrong With CVS?

While researching on compressed sparse matrix, I stumbled upon compressed row storage (CRS; compressed sparse row, CSR; Yale format) and compressed column storage (CCS; compressed sparse column, CSC). These sparse matrix compression formats are popular. Stepping back and imagining the possibilities, I considered the possibility of applying basic lossless compression techniques to sparse matrices, exploiting data redundancy, leading to what I call the compressed value storage (CVS) .

Imagining CVS, JSON and HTML5 Canvas

Compressed value storage (CVS) applies lossless compression to a matrix resulting to storage that can be smaller than the popular compressed matrix formats like CRS and CCS. In Visualizing Compressed Value Storage (CVS), I described an imagination of using CVS to store and render images. The overall idea is simple. In fact, it's so simple that it seems possible to implement the idea using JSON and HTML5 canvas.

Visualizing Compressed Value Storage (CVS)

This article describes an imagination of compressed value storage (CVS) being used in graphics storage and rendering. The imagination does not make any assumption that CVS can really be used for digital images. This is basically a spill of thought processes and no codes or implementations are shared. Still interested? Read on...

CVS MatrixProduct

CVS is coordinate-wise in many ways. However, some operations are challenging. Performing CVS-to-CVS multiplication is possible but with a catch (at least as of this writing). CVS's own rule about keeping distinct non-zero values and aligning their lists of linear indexes creates a challenge when performing operations that can create zeroes or repeating values.

CVS MatrixSum and MatrixDifference

CVS is coordinate-wise in many ways. However, some operations are challenging. Performing CVS-to-CVS addition/subtraction is possible but with a catch (at least as of this writing). CVS's own rule about keeping distinct non-zero values and aligning their lists of linear indexes creates a challenge when performing operations that can create zeroes or repeating values.

Pros and Cons of CVS

The compressed value storage (CVS) is new. I say that because I can't find materials about it or something similar to it online. Or perhaps I am searching with the wrong keywords. Basically, my problem is that there is not much to find about how CVS can be used in matrix operations. So, for now, I have to figure things out on my own.

CVS MatrixScalarProduct

My current study is to add more features/methods for the compressed value storage (CVS) format. CVS is a lossless compression format for sparse matrices. A lot of things are easier with CVS than CRS/CCS. Let's look at MatrixScalarProduct() and MatrixScalarProductInPlace().

CVS Transpose And Re-ordering Features

Image
My current study is to add more features/methods for the compressed value storage (CVS) format. CVS is a lossless compression format for sparse matrices. A lot of things are easier with CVS than CRS/CCS. Let's look at Transpose(), SetLinearIndexMode() and TransposeToNewCVS().