2013-01-08 3 views
5

Giả sử rằng srcHoughMatrix là một ma trận 3 chiều:Bất kỳ cách nào để thực hiện i + + trong MATLAB?

Thay vì

if (currentRadius >= MINIMUM_ALLOWED_RADIUS) 
    % we're using only radiuses that are 6 or above 
     currentHough = srcHoughMatrix(index,jindex,currentRadius); 
     srcHoughMatrix(index,jindex,currentRadius) = currentHough + 1; 
    end 

Làm thế nào tôi có thể thêm 1 để mỗi tế bào nếu điều kiện là đúng, mà không sử dụng một biến tạm thời hoặc không

srcHoughMatrix(index,jindex,currentRadius) = srcHoughMatrix(index,jindex,currentRadius) + 1; 

Cảm ơn

+2

Không có. – Praetorian

+2

Ngoài ra, đó là "mỗi phần tử", không phải "mỗi ô". – Jonas

Trả lời

7

Không phải là tôi sẽ không làm những gì @Jonas đề xuất, nhưng còn sử dụng operator thì sao? nó được sử dụng để xác định các biểu tượng toán tử do người dùng định nghĩa mới hoặc để xóa chúng (bạn sẽ cần hộp công cụ biểu tượng).

operator(symb, f, T, prio) xác định biểu tượng toán tử mới symb loại T (Tiền tố | Postfix | Binary | Nary) có mức độ ưu tiên prio. Hàm f đánh giá các biểu thức bằng toán tử mới.

Với biểu tượng khai thác "++", chẳng hạn, với đánh giá những chức năng f, các từ ngữ dưới đây được xây dựng bởi các phân tích cú pháp, tùy thuộc vào loại của người điều khiển, trong đó:

Prefix: Các đầu vào + + x kết quả trong f (x).

Postfix: Kết quả đầu vào x ++ trong f (x).

nhị phân: Kết quả đầu vào x ++ y ++ z cho f (f (x, y), z).

Nary: Kết quả đầu vào x ++ y ++ z cho f (x, y, z)).

xem thêm tại số documentation của MATLAB.

+0

Ồ, bắt tốt! Không có quyền truy cập vào hộp công cụ biểu tượng (tôi có Mathematica cho rằng) làm cho tôi bỏ lỡ điều đó hoàn toàn. +1 – Jonas

5

Matlab không có ++ nhà điều hành.

Tuy nhiên, nếu bạn muốn rút ngắn thời tuyên bố của bạn và tránh các biến tạm thời, bạn có thể ít nhất là viết

srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) = ... 
    srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) + 1; 

(giả định rằng currentRadius mất trên tất cả các giá trị từ 1 đến lần thứ 3-chiều-kích thước của mảng).

+0

Bạn nên ghi lại nếu câu trả lời này là hoặc không tạo tạm thời. – user2987828

+0

@ user2987828: ok, xong. Tôi cho rằng rõ ràng từ giải pháp là không có biến tạm thời nào được tạo ra, nhưng tốt hơn là phải rõ ràng. Ngoài ra, Matlab không tạo ra thời gian trong nội bộ, theo như tôi biết. – Jonas