2010-03-29 19 views
5

Tôi đang sử dụng các lớp hình học WPF .net để biểu đồ dạng sóng. Tôi đã sử dụng các phép biến đổi ma trận để chuyển đổi từ không gian tọa độ màn hình sang không gian tọa độ của tôi cho dạng sóng. Tất cả mọi thứ hoạt động tuyệt vời và nó thực sự đơn giản để theo dõi cửa sổ và tỷ lệ của tôi, vv Tôi thậm chí có thể sử dụng biến đổi nghịch đảo để tính vị trí chuột theo không gian tọa độ. Tôi sử dụng các lớp Scaling and Translation được xây dựng và sau đó là một ma trận tùy chỉnh để thực hiện đảo trục y (không có ma trận prefab để lật). Tôi muốn có thể vẽ đồ thị các dạng sóng này trên thang đo log (hoặc trục x hoặc trục y hoặc cả hai), nhưng tôi không chắc liệu điều này có thể thực hiện được với phép biến đổi ma trận hay không. Có ai biết nếu điều này là có thể, và nếu có, ma trận là gì?Có ma trận chuyển đổi nào có thể chia tỷ lệ trục x và/hoặc y logarit không?

Trả lời

2

Ma trận là các phép biến đổi tuyến tính, do đó chúng có thể mở rộng, xoay vòng, v.v. Nhưng chúng không thể kéo dài lôgarit. Đó là một sự biến đổi phi tuyến.

CHỈNH SỬA: Nhưng bạn sẽ có thể tự mình cuộn, mà không gặp sự cố quá mức. (Không yêu cầu kiến ​​thức về lin alg.) Ý tôi là, nếu bạn muốn trục x trên thang đo loga, lấy nhật ký của tọa độ x mà bạn đang vẽ đồ thị. Phần khó khăn là làm cho chú giải tỷ lệ hoạt động ở phía bên của biểu đồ - làm sôi xuống để biến đổi từng giá trị tỷ lệ từ x thành 10^x (hoặc bất kỳ cơ sở lôgarit nào bạn đang sử dụng.)

Vì vậy, chú thích sẽ đọc:

1  10 100 1000 

thay vì

1  2  3  4 
+0

Rất nhiều điều này. –

+0

cảm ơn, yeah Tôi kinda nghĩ rằng có thể là trường hợp, có lẽ có một cách để tạo ra thực hiện của riêng tôi của lớp Transform để làm công cụ phi tuyến tính? Lớp cơ sở trừu tượng Transform vẫn có vẻ sử dụng một ma trận, và điều này có lẽ là một điều cần thiết để thực hiện các phép biến đổi phức hợp, vì vậy có lẽ điều này là không thể. Đoán tôi sẽ phải tự mình đăng nhập. Rất tiếc. –

+0

nó đã được quá lâu kể từ khi tôi lấy đại số tuyến tính –

0

Vâng, rõ ràng ma trận sẽ là:

(log(x)/x  0  ) (x) = (log(x)) 
(  0  log(y)/y) (y) = (log(y)) 

Nhưng điều đó rõ ràng là không hữu ích. Bạn không thể viết một ma trận hằng số để thực hiện phép chuyển đổi phi tuyến tính.

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