generated "unvaforable zero" value from multiplying two matrices, how to solve/correct it?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
for simplicity, i have a two matrices A and B generated by matlab like below. when i calculated manually by excel with the function mmult(A;B) the value of C is vaforable like this. even when i increasing the decimal. especially the value of cell matrix C at 3,1 it was definetly zero

but when i multiply them in matlab i got value of C like this

how to deal with this type of problem? any guidance will help me alot, because i got bunch of wild value zero like this :( thanks a lott.
the following attachments is my full code, matrix A is k_sup and matrix B is uaa, and matrix C is Fsupt in my line code. input3Dxlsx is my input.
P.S
i tried calculate separately with new script (like the following A*B bottom), copy those matrices from generated excel (so the value is accurate), and the generated value of matrix C is entirely different, like this:

here is the following matrix A and B i copy from generated excel
A = [-3710000000 0 0 0 0 0;
0 -12624305.56 0 0 0 75745833.33;
0 0 -2318750 0 -13912500 0;
0 0 0 -69358333.33 0 0;
0 0 13912500 0 55650000 0;
0 -75745833.33 0 0 0 302983333.3]
B = [0
0
-0.025876011
0
0.004312668
0]
C = A*B
1 Kommentar
Stephen23
am 23 Jan. 2025
Bearbeitet: Stephen23
am 23 Jan. 2025
"P.S i tried calculate separately with new script (like the following A*B bottom), copy those matrices from generated excel (so the value is accurate), and the generated value of matrix C is entirely different"
MATLAB returns the same result (although perhaps displayed to a different precision):
A = [-3710000000,0,0,0,0,0;; 0,-12624305.56,0,0,0,75745833.33;; 0,0,-2318750,0,-13912500,0;; 0,0,0,-69358333.33,0,0;; 0,0,13912500,0,55650000,0;; 0,-75745833.33,0,0,0,302983333.3]
B = [0; 0; -0.025876011; 0; 0.004312668; 0]
format long G
C = A*B
Antworten (1)
Abhiram
am 23 Jan. 2025
Bearbeitet: Abhiram
am 23 Jan. 2025
Hello Adli,
I understand you are trying to multiply two matrices and in places of zero you are getting some nominal values.
To resolve the issue, we can set the values less than a chosen tolerance to zero explicitly by defining a “tolerance ” variable to an appropriate value. For the given sample matrix “C”, the desired result can be achieved with the code given below:
% Define the tolerance
tolerance = 1e-2;
% Round small values in C to zero
C(abs(C) < tolerance) = 0;
% Display the result with long format
format long
disp(C);
In addition, the “format” functionality in MATLAB can be used to change the output display format to display the required number of decimal values for a numeric value. An example usage of the MATLAB “format” function is given in the code below:
A = 0.100000043434;
format short
disp(A);
format long
disp(A);
Refer to the documentation for the MATLAB “format” function for more details:
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Import from MATLAB finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!