Câu hỏi liên quan

0 Phiếu
6 Câu trả lời
0 Phiếu
4 Câu trả lời
0 Phiếu
0 Câu trả lời
+1 Phiếu
1 Trả lời
Đã hỏi 24/4/2016 bởi Guvkocik (350 điểm)

MATLAB lặp lại số dựa trên một vector độ dài


0 Phiếu
Đã hỏi 23/5/2016 bởi Ceb782 (300 điểm)
Có một cách vectorised để làm những điều sau đây? (thể hiện bởi một ví dụ):
input_lengths = [ 1 1 1 4       3     2   1 ]
result =        [ 1 2 3 4 4 4 4 5 5 5 6 6 7 ]
tôi có khoảng cách trong các input_lengths vì vậy, nó rất dễ dàng để hiểu làm thế nào kết quả thu được vectơ kết quả là chiều dài: sum(lengths). Tôi đang tính toán result bằng cách sử dụng các vòng lặp:
result = ones(1, sum(input_lengths ));
counter = 1;
for i = 1:length(input_lengths)
    start_index = counter;
    end_index = counter + input_lengths (i) - 1;
    result(start_index:end_index) = i;
    counter = end_index + 1;
end
EDIT: tôi cũng có thể làm điều này bằng cách sử dụng arrayfun (mặc dù đó là không chính xác là một chức năng vectorised)
cell_result = arrayfun(@(x) repmat(x, 1, input_lengths(x)), 1:length(input_lengths), 'UniformOutput', false);
cell_result : {[1], [2], [3], [4 4 4 4], [5 5 5], [6 6], [7]}
result = [cell_result{:}];
result : [ 1 2 3 4 4 4 4 5 5 5 6 6 7 ]

Xin vui lòng đăng nhập hoặc đăng ký để trả lời câu hỏi này.


ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...