2013-02-05 2 views
5

Tôi đang làm việc với một số mã MATLAB tôi thừa kế từ một người khác, tôi không hiểu ý nghĩa của dòng q = [q; qi ']. Tôi cảm thấy như tôi sẽ có thể chỉ cần loại bỏ nó, để q = distribuc ...Biểu tượng chính này làm gì - MATLAB?

function [ q ] = ObtainHistogramForEachTarget(state, numberOfTargets, image, q) 

    for i=1 : numberOfTargets 
     qi = distribucion_color_bin_RGB2(state(i).xPosition,state(i).yPosition,state(i).size,image,2); 
     q = [q; qi']; 
    end 
end 

Bất cứ ai có thể giải thích điều này cho tôi?

+1

Tôi nghĩ từ bộ nhớ nó đại diện cho một chuyển vị vào một ma trận, tôi sẽ cần phải kiểm tra. – legrandviking

+2

Tôi sẽ thay thế ''' bằng '.'' vì đầu tiên là một chuyển vị liên hợp phức tạp và sau đó chỉ là một chuyển vị thường xuyên. – ja72

+1

@ ja72 Nếu bạn không bao giờ làm việc với các số phức tạp thì đơn giản ''' là đủ. Khi người hỏi vòng qua 'i', việc giữ mọi thứ đơn giản là an toàn. –

Trả lời

8

MATLAB có một số chức năng tích hợp để thao tác ma trận. Ký tự đặc biệt, ', đối với nguyên tố biểu thị sự chuyển vị của ma trận.

Tuyên bố A = [ 1 2 3;4 5 6;7 8 9]' sản xuất ma trận

A = 
    1 4 7 
    2 5 8 
    3 6 9 

hy vọng điều này giúp

+7

Lưu ý rằng '.'' là transpose và' ''là chuyển vị liên hợp phức tạp. Sự khác biệt là rất quan trọng khi làm việc với dữ liệu phức tạp. – shoelzer

4

Từ sự giúp đỡ của Matlab

giúp đỡ ctranspose
'liên hợp transpose Complex.
X' là transpose liên hợp phức tạp của X.

B = ctranspose(A) is called for the syntax A' (complex conjugate 
transpose) when A is an object. 
2

Cú pháp [X ; Y] nối hai ma trận theo chiều dọc. Vì vậy, dòng đó là thêm các kết quả vừa được tính toán vào các tính toán đã được tính toán q. Nếu bạn chỉ cần gán lại q, bạn sẽ loại bỏ tất cả các tính toán mà hàm đã thực hiện mỗi lần thông qua vòng lặp.

Dấu nháy đơn chuyển tiếp ' tạo liên hợp phức tạp và chuyển đổi ma trận. Tôi đoán rằng distribucion_color_bin_RGB2 có thể trả về một vectơ cột có giá trị thực, và tác giả muốn lật nó thành ngang trước khi gắn nó vào ma trận kết quả. Khi @ ja72 chỉ ra, tốt hơn là nên sử dụng .' (chỉ chuyển vị trí) theo mặc định và ' chỉ khi bạn thực sự là một liên hợp phức tạp, ngay cả khi bạn mong đợi dữ liệu của mình là có thật.

0

thường A 'là sự chuyển vị của ma trận A, nhưng nó là chuyển vị liên hợp. nó hoạt động với ma trận thực, không hoạt động với ma trận phức tạp

transpose (A) là hàm transpose thực, cả hai đều hoạt động đối với ma trận R và ma trận C.

Tôi thường sử dụng A', thật dễ dàng, nhưng tôi đã thay đổi thói quen của tôi cho đến khi tôi gặp lỗi trong biến đổi FFT