type if x is a square matrix statement

6 vues (au cours des 30 derniers jours)
Zhuoying Lin
Zhuoying Lin le 26 Oct 2017
Commenté : michio le 27 Oct 2017
Hi, How do I write the script for "If x is a square matrix funcz will be the 0"?
Thanks!
  1 commentaire
Jan
Jan le 27 Oct 2017
A bullet-proof solution is not trivial. Therefore this question is more interesting than it looks like on first glance.

Connectez-vous pour commenter.

Réponses (3)

Stephen23
Stephen23 le 26 Oct 2017
Modifié(e) : Stephen23 le 26 Oct 2017
funcz = ~diff(size(x))
  5 commentaires
Stephen23
Stephen23 le 26 Oct 2017
@Jan Simon: thank you, that is a tidy solution for ND arrays.
Zhuoying Lin
Zhuoying Lin le 26 Oct 2017
Never thought about this question can be such complex. I just start learning Matlab and THANK YOU all for your answers!

Connectez-vous pour commenter.


Jan
Jan le 26 Oct 2017
Modifié(e) : Jan le 26 Oct 2017
funcz = ~ismatrix(x) || (size(x, 1) ~= size(x, 2));
or with Matlab versions before R2010b:
funcz = (ndims(x) ~= 2) || (size(x, 1) ~= size(x, 2));
This rejects [0 x 1] matrices, but is is questionable, if an empty matrix can be non-square.
To reply funcz=0 for vectors:
funcz = (ndims(x) ~= 2) || all(size(x) ~= 1);
or with modern Matlab versions:
funcz = ~isvector(x)

michio
michio le 26 Oct 2017
[nRow,nCol] = size(x);
if nRow == nCol
funcz = 0;
end
  3 commentaires
Jan
Jan le 26 Oct 2017
Modifié(e) : Jan le 26 Oct 2017
This fails for a [4,2,2] array:
[nR, nC] = size(rand(4, 2, 2))
nR = 4, nC = 4
michio
michio le 27 Oct 2017
Yes, it assumes that the array is 2D. Interesting thread :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by