2013-06-13 35 views
12

Trong quãng tám 3.6.2, tôi có một ma trận X=[1 2 3; 2 4 5; 2 6 5; 2 3 7; 3 6 8; 2 4 6; 3 6 8; 4 7 10] và tôi muốn để tính toán X-mean (X), trong đó mang lại cho tôi:hành Octave -: hoạt động phát sóng tự động áp dụng

octave:2> X-mean(X) 
warning: operator -: automatic broadcasting operation applied 
ans = 

    -1.37500 -2.75000 -3.50000 
    -0.37500 -0.75000 -1.50000 
    -0.37500 1.25000 -1.50000 
    -0.37500 -1.75000 0.50000 
    0.62500 1.25000 1.50000 
    -0.37500 -0.75000 -0.50000 
    0.62500 1.25000 1.50000 
    1.62500 2.25000 3.50000 

Tuy nhiên, khi tôi cố gắng lệnh tương tự trên một máy khác, nó than phiền rằng các kích thước của ma trận không khớp nhau:

error: operator -: nonconformant arguments (op1 is 7x3, op2 is 1x3) 

Bất kỳ ý tưởng làm thế nào để kích hoạt mà "tự động hoạt động phát sóng" được áp dụng trong trường hợp đầu tiên? (Phiên bản quãng tám đều giống nhau!)

+3

mà dường như rất lạ. Bạn không thể kích hoạt hoặc hủy kích hoạt brodcasting tự động. Bạn có chắc là họ thực sự đang chạy phiên bản Octave giống nhau không? Lưu ý rằng bạn có thể cài đặt cùng một phiên bản Octave trên cả hai máy nhưng chạy các phiên bản khác nhau. Kiểm tra giá trị của 'OCTAVE_VERSION' tại dấu nhắc quãng tám. – carandraug

Trả lời

18

Bạn có thể yêu cầu một cách rõ ràng phát sóng bằng cách gọi bsxfun(operation, A, B), vì vậy trong trường hợp của bạn:

bsxfun(@minus, X, mean(X)) 

Octave reference, Matlab reference

5

xin lỗi đến trong quá muộn. Mặc dù với cùng một phiên bản, bạn có thể có thiết lập máy thứ hai khác nhau.

Nhìn vào Octave Broadcasting documentation, bạn có thể thiết lập các beahaviour cảnh báo trực tiếp:

warning ("error", "Octave:broadcast");

vs

warning ("off", "Octave:broadcast"); 
+0

Tuyệt vời, cảm ơn .. – cgl

Các vấn đề liên quan