Any pointer for analyzing this matrix?

  • Thread starter divB
  • Start date
  • Tags
    Matrix
In summary: How to find a good submatrix</a> could be of some help.In summary, to minimize the condition number of a matrix, you can subset it using point-wise multiplication of matrices.
  • #1
divB
87
0
Row subset of matrix with lowest condition number

Hi,

I have a matrix with [itex]N[/itex] rows and [itex]K\cdot M \ll N[/itex] columns.
Is there a generic way to choose [itex]L[/itex] rows s.t. the condition number of the matrix is minimized?
I would appreciate any pointer or any hints how I could approach the problem.
Currently I am brute forcing all possible subsets and seek for the set with the smallest condition number but this is nearly undeasible.

I do not think it helps but if it does, this is the structure of the matrix: Is is a pointwise multiplication of 2 matrices. The first summand consists of [itex]K[/itex] vertical "ribbons" of size [itex]N \times M[/itex]. Each consists of [itex]M[/itex] equal columns where the columns are the DFT of a power of a discrete random(like) signal (I do not know if this matters ...)
The second summand consists of [itex]K[/itex] equal Vandermonde matrices (to be precicse, the first [itex]M[/itex] columns of the DFT matrix).
Formally:

[tex]
\left[\begin{matrix} \mathbf{A}_1 & \mathbf{A}_2 & \cdots & \mathbf{A}_K \end{matrix}\right] * \left[\underbrace{\begin{matrix}\mathbf{V} & \mathbf{V} & \cdots & \mathbf{V} \end{matrix}}_{K-\mathrm{times}}\right]
[/tex]

where [itex]*[/itex] denotes point-wise multiplication.

[tex]
\mathbf{A}_k = \left[\underbrace{\begin{matrix}
\mathrm{DFT}(x_n^{k-1})^T & \cdots & \mathrm{DFT}(x_n^{k-1})^T
\end{matrix}}_{M-\mathrm{times}}\right]
[/tex]

[tex]
\mathbf{V} = \left[\begin{matrix}
1 & 1 & 1 & \cdots & 1 \\
1 & u^1 & u^2 & \cdots & u^M \\
1 & u^2 & u^4 & \cdots & u^{2M} \\
\vdots & \ddots & \ddots & \ddots & \vdots \\
1 & u^N & u^{2N} & \cdots & u^{NM}
\end{matrix}\right]
[/tex]

Thanks,
divB
 
Last edited:
Physics news on Phys.org
  • #2
divB said:
I have a matrix with [itex]N[/itex] rows and [itex]K\cdot M \ll N[/itex] columns.
Is there a generic way to choose [itex]L[/itex] rows s.t. the condition number of the matrix is minimized?

If you choose [itex] L \ne K\cdot M [/itex], I'm curious how you define the "condition number" of the resulting non-square matrix.
 
  • #3
Hi Stephen,

Thanks. I have no formal requirement for this. The system should be solved via LS and stability and accuracy increases as the condition number decreases. Which definition is exactly used is not so relevant to me; the ratio between largest and smallest singular value works pretty well (cond in MATLAB) and of course works for any, non-square matrix.

divB
 
  • #5



Hi divB,

Thank you for your question. Analyzing a matrix with a large number of rows and a low condition number can be a challenging task. However, there are a few pointers that can help guide your analysis:

1. Understand the concept of condition number: The condition number of a matrix is a measure of how sensitive its output is to changes in its input. A lower condition number indicates that the matrix is less sensitive to changes, making it more stable and easier to analyze.

2. Use specialized algorithms: There are specialized algorithms available for computing the condition number of a matrix. These algorithms take advantage of the structure of the matrix to efficiently calculate its condition number. One such algorithm is the QR decomposition method, which decomposes a matrix into an orthogonal matrix and an upper triangular matrix and can be used to calculate the condition number of a matrix.

3. Consider the structure of the matrix: As you mentioned, your matrix has a specific structure, which may provide some insights into its condition number. For example, the presence of Vandermonde matrices in the second summand may have an impact on the overall condition number. It would be helpful to analyze the individual condition numbers of each summand and see how they affect the overall condition number.

4. Use a systematic approach: As you mentioned, brute forcing all possible subsets to find the one with the lowest condition number is not feasible. Instead, you can use a systematic approach such as gradient descent or genetic algorithms to search for the optimal subset of rows that minimizes the condition number. These methods can help you narrow down the search space and find a near-optimal solution.

I hope these pointers will help guide your analysis. Good luck with your research! If you have any further questions or need more specific guidance, please do not hesitate to reach out. As scientists, we are always happy to help and collaborate on challenging problems.

Best regards,
 

1. How do I determine the size of the matrix?

To determine the size of a matrix, you can use the "size" function in most programming languages. This will return the number of rows and columns in the matrix.

2. How can I identify the type of data in the matrix?

You can identify the type of data in a matrix by looking at the values within the matrix. If the values are all numerical, it is likely a numeric matrix. If the values are strings, it is likely a character matrix. Some programming languages also have functions to explicitly determine the data type of a matrix.

3. What is the best way to visualize a matrix?

The best way to visualize a matrix depends on the size and type of data in the matrix. For smaller matrices, a simple table or plot may be sufficient. For larger or more complex matrices, you may need to use advanced data visualization techniques such as heatmaps, scatter plots, or network diagrams.

4. How can I access specific elements or subsets of the matrix?

To access specific elements or subsets of a matrix, you can use indexing or slicing methods available in most programming languages. This allows you to specify the rows and columns you want to access and return a subset of the original matrix.

5. Can I perform mathematical operations on a matrix?

Yes, you can perform mathematical operations on a matrix such as addition, subtraction, multiplication, and division. Most programming languages have built-in functions or libraries for matrix operations. It is important to ensure that the matrices involved in the operation have compatible dimensions.

Similar threads

Replies
34
Views
2K
Replies
27
Views
1K
  • Linear and Abstract Algebra
Replies
1
Views
925
  • Linear and Abstract Algebra
Replies
7
Views
2K
  • Linear and Abstract Algebra
Replies
15
Views
4K
  • Linear and Abstract Algebra
2
Replies
52
Views
2K
  • Linear and Abstract Algebra
Replies
1
Views
733
Replies
4
Views
1K
  • Linear and Abstract Algebra
Replies
2
Views
2K
  • Linear and Abstract Algebra
Replies
2
Views
1K
Back
Top