Matlab 将矩阵拆分为多列

Matlab 将矩阵拆分为多列,matlab,matrix,vector,multiple-columns,Matlab,Matrix,Vector,Multiple Columns,假设我有两列矩阵M=[0,1;2,3;4,5],我想把它们同时分成两个向量。我想做的是[A,B]=M所以A=[0;2;4]和B=[1;3;5],但这不起作用。 有什么方法可以在一行代码中完成这项工作吗?我的实际矩阵大约有20列,所以将它们存储在一行中就太好了 最简单的方法是和的组合 或者,您可以省略交易: [A, B] = inputData{:}; 也就是说,当你得到更多的元素时,把它们留在一个单元格数组中,而不是试图处理20个变量 columns = num2cell(M, 1);

假设我有两列矩阵
M=[0,1;2,3;4,5]
,我想把它们同时分成两个向量。我想做的是
[A,B]=M
所以
A=[0;2;4]
B=[1;3;5]
,但这不起作用。
有什么方法可以在一行代码中完成这项工作吗?我的实际矩阵大约有20列,所以将它们存储在一行中就太好了

最简单的方法是和的组合

或者,您可以省略
交易

[A, B] = inputData{:};
也就是说,当你得到更多的元素时,把它们留在一个单元格数组中,而不是试图处理20个变量

columns = num2cell(M, 1);

    [4x1 double]    [4x1 double]

最简单的方法是将和结合起来

或者,您可以省略
交易

[A, B] = inputData{:};
也就是说,当你得到更多的元素时,把它们留在一个单元格数组中,而不是试图处理20个变量

columns = num2cell(M, 1);

    [4x1 double]    [4x1 double]


你为什么要这么做?你为什么要这么做?为什么
A
天生比
M(:,1)
好?除了不能循环
A,B,C,
而不使用一些讨厌的代码之外……我需要这个,因为向量有特殊的含义,我需要稍后根据变量名选择子集。如果我使用指数,那么我不知道它们的含义是什么,因为没有变量name@HéctorvandenBoorn最好使用其他方法(除了变量名)来表示数据的真实含义。您打算以后如何使用变量名来选择变量?为什么要这样做?为什么要这样做?为什么
A
天生比
M(:,1)
好?除了不能循环
A,B,C,
而不使用一些讨厌的代码之外……我需要这个,因为向量有特殊的含义,我需要稍后根据变量名选择子集。如果我使用指数,那么我不知道它们的含义是什么,因为没有变量name@HéctorvandenBoorn最好使用其他方法(除了变量名)来表示数据的真实含义。您打算以后如何使用变量名来选择变量?这正是我想要的。我以前尝试过这个方法,但M已经是一个单元格数组,所以我跳过了转换为单元格的过程,这很关键。@HéctorvandenBoorn,这可能会解决您的直接问题。我强烈推荐Bicker和excaza在初始评论中的建议。如果你的数据是相同的大小,考虑把它放在一个2D数组中,因为性能会好很多。不需要使用<代码>交易< /代码>:<代码> [a,b]=输入数据{:};<代码>@Daniel谢谢你指出这一点。我一直忘了这一点,因为我直到几周前才真正看到这种语法。在最近的MATLAB版本中,只有一个真正的用例需要处理,当您想要将相同的内容分配给多个变量时。例如
[A,B,C,D]=deal(零(n))
具有典型的预分配代码。对于所有其他情况,
交易
都是不必要的。这正是我想要的。我以前尝试过这个方法,但M已经是一个单元格数组,所以我跳过了转换为单元格的过程,这很关键。@HéctorvandenBoorn,这可能会解决您的直接问题。我强烈推荐Bicker和excaza在初始评论中的建议。如果你的数据是相同的大小,考虑把它放在一个2D数组中,因为性能会好很多。不需要使用<代码>交易< /代码>:<代码> [a,b]=输入数据{:};<代码>@Daniel谢谢你指出这一点。我一直忘了这一点,因为我直到几周前才真正看到这种语法。在最近的MATLAB版本中,只有一个真正的用例需要处理,当您想要将相同的内容分配给多个变量时。例如
[A,B,C,D]=deal(零(n))
具有典型的预分配代码。对于所有其他情况,
deal
是不必要的。