what does c(:).' mean? c should be a vector

Hi I saw this in Matlab document:
function obj = DocPolynom(c)
% Construct a DocPolynom object using the coefficients supplied
if isa(c,'DocPolynom')
obj.coef = c.coef;
else
obj.coef = c(:).';
end
end
What does c(:).' mean? Is .' the transpose of each element? But I think c should be a vector here. Any help's appreciated. Thanks!

 採用された回答

Matz Johansson Bergström
Matz Johansson Bergström 2014 年 8 月 24 日

1 投票

By writing c(:)' you are making sure that the vector has the dimension 1xn, where n is the length of the vector, a row vector. However, there is a very important difference between c(:).' and c(:)', because they are not the same.
The difference is when you are working with complex vectors, for instance
tmp = (1:5) + 1i;
tmp(:).'
which gives you each complex number in a row vector, compared to
tmp(:)'
which is giving you a row vector of the complex conjugate of each element.

1 件のコメント

Yuji Zhang
Yuji Zhang 2014 年 8 月 24 日
Ahh i see! Thanks Matz!

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

その他の回答 (1 件)

Roger Stafford
Roger Stafford 2014 年 8 月 24 日

2 投票

This is a short way to reshape c, whether it is a vector or array, into a row vector. You are then guaranteed that obj.coef will be a vector with just one row and however many columns as there are elements in c.
reshape(c,[],1)
will do the same thing.

4 件のコメント

Yuji Zhang
Yuji Zhang 2014 年 8 月 24 日
*Thanks Roger. Isn't reshape c(:)?
c(:) turns any matrix c into one column.
c(:)' is then one row.*
Why c(:).' ? Let me know. Thanks a lot!
Image Analyst
Image Analyst 2014 年 8 月 24 日
Correct, no matter what c is to start with c(:) turns it into a column vector. Then ' transposes it into a row vector. The dot means "element by element" which doesn't really have any meaning here (since c is a 1D vector and it's not operating on any other variable) so c(:).' is the same as c(:)'.
Roger Stafford
Roger Stafford 2014 年 8 月 24 日
No, the dot prevents matlab from taking the complex conjugate of elements along with the transposition. It has nothing to do with element-by-element operation. Their documentation says: "b = a.' computes the non-conjugate transpose of matrix a and returns the result in b" and "b = a' computes the complex conjugate transpose of matrix a and returns the result in b."
If c is entirely real-valued, then c(:).' and c(:)' are the same.
Yuji Zhang
Yuji Zhang 2014 年 8 月 25 日
Ahh I see that! So the dot has two meanings! Thanks a lot for your help Roger!

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

カテゴリ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by