Matlab tril function does not work as expected

4 visualizzazioni (ultimi 30 giorni)
I am using Matlab2019a. When I was using tril an triu functions for generating triangular matrix, they ony give single values. Here are their function descriptions when type editing commdands:
tril Extract lower triangular part.
tril(X) is the lower triangular part of X.
tril(X,K) is the elements on and below the K-th diagonal
of X . K = 0 is the main diagonal, K > 0 is above the
main diagonal and K < 0 is below the main diagonal.
triu Extract upper triangular part.
triu(X) is the upper triangular part of X.
triu(X,K) is the elements on and above the K-th diagonal of
X. K = 0 is the main diagonal, K > 0 is above the main
diagonal and K < 0 is below the main diagonal.
When typing a simple command:
tril(4)
it gives a single value 4
Why the version of Matlab does not support the offiicially claimed functionalities (both introduced since 2006a) as described at https://www.mathworks.com/help/matlab/ref/triu.html and https://www.mathworks.com/help/matlab/ref/tril.html
  1 Commento
James Tursa
James Tursa il 12 Apr 2020
You are going to have to provide examples of why you think they don't work rather that just making a blanket statement.

Accedi per commentare.

Risposta accettata

Image Analyst
Image Analyst il 13 Apr 2020
4 is a scalar (or a matrix of 1 row and 1 column) - essentially there is no upper or lower triangular part. There is only one part - one element: 4. So it returns 4, as expected.
So now let's look at an actual matrix (larger than a 1-by-1):
m = magic(7)
t = tril(m)
What does this return for you? For me it returns:
m =
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
t =
30 0 0 0 0 0 0
38 47 0 0 0 0 0
46 6 8 0 0 0 0
5 14 16 25 0 0 0
13 15 24 33 42 0 0
21 23 32 41 43 3 0
22 31 40 49 2 11 20
again, exactly as expected. So now, what does it return for you (evidently it's wrong you say so you won't get what I got) in R2019a, and in the earlier version you used? Sometimes new functions change behavior you know. What was the earlier version you used?

Più risposte (0)

Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by