MATLAB Why am I getting a 'Matrix is singular to working precision' error in Matlab?

AI Thread Summary
The discussion revolves around modifying a MATLAB function for calculating the radial average of a matrix to restrict its analysis to a specific angular range, specifically 15 degrees on either side of the y-axis. The user encountered an error, "Matrix is singular to working precision," when attempting to apply a condition in the for loop to limit the function's scope. It was suggested that the user should replace the division operator with the element-wise division operator (./) to avoid issues related to matrix operations. This distinction is crucial when working with vectors and matrices in MATLAB, as it affects how calculations are performed and can prevent errors related to matrix singularity.
rolotomassi
Messages
52
Reaction score
0
Here is a link the code which I am trying to modify. It is the radial average of a matrix function.

http://uk.mathworks.com/matlabcentral/fileexchange/46468-radialavg-zip/content/radialavg.m

I want to restrict the function to only look within certain angles, e.g. 15 degrees either side of the y axis.

The matrix is centred about the axis I think in this function.

I have tried to use conditions which I add to the first line in the for loop such as :

Y/X > some value, which would restrict to a conic section.

But I get the error "Matrix is singular to working precision" and i don't know why. Its probably evident, but I am a beginner rarely use Matlab.

Thanks
 
Physics news on Phys.org
This article from Mathworks may help:

https://www.mathworks.com/matlabcentral/newsreader/view_thread/170201
 
I think you want to use this instead:

Y./X > some value

When you're working with simple numbers, / and ./ are the same. But once you start talking about vectors and matrices they become different operations.

./ is for element-wise division.
/ is for solving the linear equation xA=B for x

The condition number of the matrices becomes irrelevant if you use ./
 

Similar threads

Back
Top