Tôi có mảng ô, mỗi ô chứa một chuỗi các giá trị dưới dạng vectơ hàng. Trình tự chứa một số giá trị bị thiếu được biểu thị bằng NaN
.MATLAB: Sử dụng phép nội suy để thay thế các giá trị bị thiếu (NaN)
Tôi muốn thay thế tất cả các NaN bằng cách sử dụng một số loại phương pháp nội suy, làm thế nào tôi có thể làm điều này trong MATLAB? Tôi cũng mở các đề xuất khác về cách xử lý các giá trị bị thiếu này.
xem xét dữ liệu mẫu này để minh họa cho vấn đề:
seq = {randn(1,10); randn(1,7); randn(1,8)};
for i=1:numel(seq)
%# simulate some missing values
ind = rand(size(seq{i})) < 0.2;
seq{i}(ind) = nan;
end
Các chuỗi kết quả:
seq{1}
ans =
-0.50782 -0.32058 NaN -3.0292 -0.45701 1.2424 NaN 0.93373 NaN -0.029006
seq{2}
ans =
0.18245 -1.5651 -0.084539 1.6039 0.098348 0.041374 -0.73417
seq{3}
ans =
NaN NaN 0.42639 -0.37281 -0.23645 2.0237 -2.2584 2.2294
Edit:
Dựa trên những phản hồi, tôi nghĩ đã có một nhầm lẫn: rõ ràng là tôi không làm việc với dữ liệu ngẫu nhiên, mã được hiển thị ở trên chỉ đơn giản là một ví dụ về cách t dữ liệu của anh ta được cấu trúc.
Dữ liệu thực tế là một số dạng tín hiệu được xử lý. Vấn đề là trong quá trình phân tích, giải pháp của tôi sẽ thất bại nếu chuỗi chứa giá trị thiếu, do đó cần lọc/nội suy (tôi đã xem xét sử dụng giá trị trung bình của mỗi chuỗi để lấp đầy khoảng trống, nhưng tôi hy vọng điều gì đó mạnh hơn)
Trong ví dụ của bạn, tôi nghĩ bạn sẽ khó ép để tìm cách nội suy các giá trị bị thiếu. Nội suy đòi hỏi rằng có một số loại mối quan hệ giữa các điểm dữ liệu. Thường thì điều này có thể là chúng đến từ một chuỗi thời gian (do đó, một dự đoán tốt là phần còn thiếu có thể được suy ra từ các điểm lân cận). Trong dữ liệu mẫu của bạn, bạn đang cố gắng đoán "xu hướng lật" chỉ dựa trên các đồng xu khác. Nếu bạn có thể cung cấp cho chúng tôi thêm thông tin về ví dụ cụ thể của bạn, chúng tôi có thể trợ giúp thêm. – JudoWill
@JudoWill: Tôi nghĩ anh ấy chỉ sử dụng dữ liệu ngẫu nhiên làm ví dụ cho mọi người chơi cùng. – gnovice