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

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!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by