Convert rows of a matrix to vectors

2020-05-09 18:06发布

I have a matrix lets say:

A=[1 2 1; 5 6 7; 7 8 9]

and I want to extract its rows in the following format:

x_1=[1 2 1] x_2=[5 6 7] x_3=[7 8 9]

I want to know how I can write x_1 , x_2, x_3. I know how to extract the rows but I don't know how to make my x_1, x_2 and x_3. I want this to be automatic, because my real matrix has a very large size and I don't want to make x_1 x_2 .. x_100 by hand.

1条回答
霸刀☆藐视天下
2楼-- · 2020-05-09 18:29

You can try the following:

m = size(A,1);

for i=1:m
    % set the variable name
    varName = sprintf('x_%d',i);

    % create and assign the variable in the base workspace
    assignin('base',varName,A(i,:));
end 

The code iterates through every row of A, creates the variable name (as per your format) and then assigns a variable in the MATLAB base workspace ('base') with its data being the ith row of A.

If doing this from a function, rather than using 'base' use 'caller' to indicate that the variables should be created in the workspace of the function.

查看更多
登录 后发表回答