Fprintf not showing up in function output

23 ビュー (過去 30 日間)
Gurinder Punni 2020 年 10 月 21 日

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))

サインインしてコメントする。

回答 (1 件)

Namit Joshi 2022 年 8 月 24 日
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!

サインインしてコメントする。

カテゴリ

Find more on Dates and Time in Help Center and File Exchange

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by