2010-05-23 35 views
15

thể trùng lặp:
How do I do multiple assignment in MATLAB?MATLAB Cách dễ nhất để gán các yếu tố của một vector để biến cá nhân

Vì vậy, chúng ta hãy nói rằng tôi có một vector p = [1 2 3]. Tôi muốn một lệnh trông giống như sau:

[x y z] = p; 

sao cho x = p (1), y = p (2) và z = p (3).

Có cách nào dễ dàng để thực hiện việc này không?

+3

Trùng lặp: http://stackoverflow.com/questions/2740704/is-there-anything-like-deal-for-normal-matlab-arrays, bản thân nó trùng lặp với lưu lượng truy cập http: // stackoverflow. com/questions/2337126/multiple-assignment-in-matlab – mtrw

Trả lời

18

Chuyển thành mảng ô.

pCell = num2cell(p); 
[x,y,z] = pCell{:}; 
+0

Vâng, có vẻ như đây là điều tốt nhất tôi có thể làm. – rlbond

2

Bạn có thể sử dụng deal:

[x y z] = deal(p(1), p(2), p(3))

+5

Vâng, đó chỉ là tiết như 'x = p (1); y = p (2), z = p (3) ' – rlbond

1

Vâng, hóa ra không có cách nào để một dòng này, vì vậy tôi đã viết một hàm.

function varargout = deal_array(arr) 
    s = numel(arr); 
    n = nargout; 

    if n > s 
     error('Insufficient number of elements in array!'); 
    elseif n == 0 
     return; 
    end 

    for i = 1:n 
     varargout(i) = {arr(i)}; %#ok<AGROW> 
    end 
end 
Các vấn đề liên quan