Fprintf not showing up in function output

21 Ansichten (letzte 30 Tage)
Gurinder Punni
Gurinder Punni am 21 Okt. 2020
Beantwortet: Namit Joshi am 24 Aug. 2022
Hello, I made a function that calculates the area or volume of a matrix that is linear. And, I got the math stuff down but I am not sure how to display the text so it can output a complete sentence. Here is function code:
It shows the corresponding sentence for (A) but for (B) it shows just the value of D.
function(D) = areavol(A)
R = rank(A);
[rows,col] = size(A);
D = abs(det(A));
if col == 3
word = 'parallelepiped';
else
word = 'parallelogram';
if rows > R
D = 0;
fprintf('Error,%s is not linearly independent and the area or volume is %g',word,D);
else
if col == 3
fprintf('The volume of the parallelepiped is %g cubic units',D)
else
fprintf('The area of the parallegram is %g square units',D)
end
end
end
% (A)
A = randi(10,2)
%(B)
A = fix(10*rand(3))

Antworten (1)

Namit Joshi
Namit Joshi am 24 Aug. 2022
Hi Gurinder,
When we assign "A = fix(10*rand(3))", the variable "A" stores a matrix of 3X3. In the code you have provided (I have attached the code with adjusted indentation below), when the number of columns is 3 you are only assigning to variable "word" and not printing anything. Therefore you do not see any print statement.
function D = areavol(A)
R = rank(A);
[rows,col] = size(A);
D = abs(det(A));
if col == 3
word = 'parallelepiped';
else
word = 'parallelogram';
if rows > R
D = 0;
fprintf('Error,%s is not linearly independent and the area or volume is %g',word,D);
else
if col == 3
fprintf('The volume of the parallelepiped is %g cubic units',D)
else
fprintf('The area of the parallegram is %g square units',D)
end
end
end
I assume that you missed adding an "end" in your code after the first else statement.
Hope this helps!

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by