首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵向量单元阵列

矩阵向量单元阵列
EN

Stack Overflow用户
提问于 2020-02-03 16:59:50
回答 3查看 161关注 0票数 0

我有一个3xN数据矩阵,例如:

代码语言:javascript
复制
x = [1,2,3;
     4,5,6;
     7,8,9] 

我希望将其转换为向量的1xN向量,每一行都是向量,例如

代码语言:javascript
复制
y = [[1,2,3]; 
     [4,5,6];
     [7,8,9]] 

我怎样才能做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-03 17:07:30

num2cell就是这样做的:

代码语言:javascript
复制
y = num2cell(x, 2); % specify 2nd dimension

其结果是向量的单元数组:

代码语言:javascript
复制
>> x = [1,2,3; 4,5,6; 7,8,9];
>> y = num2cell(x, 2)
y =
  3×1 cell array
    {1×3 double}
    {1×3 double}
    {1×3 double}
>> celldisp(y)
y{1} =
     1     2     3
y{2} =
     4     5     6
y{3} =
     7     8     9
票数 3
EN

Stack Overflow用户

发布于 2020-02-03 17:04:02

根据定义,向量或矩阵的元素是标量,在matlab中向量是不可能的。您可以使用向量{[1,2,3];[4,5,6];[7,8,9]}的单元格数组。

票数 1
EN

Stack Overflow用户

发布于 2020-02-03 17:05:21

在MATLAB中,矩阵(或相同类型的数字向量)只能有标量元素,如您的x示例所示。

要实现y,您必须使用一个单元格数组,该数组可以使用arrayfun创建

代码语言:javascript
复制
>> y = arrayfun( @(ii) x(ii,:), 1:size(x,1), 'uni', 0 );
y = 
   {[1 2 3], [4 5 6], [7 8 9]};

现在需要使用大括号(如y{1} for [1 2 3] )进行索引。请注意,您现在不能利用原始矩阵可以提供给代码中的任何数学操作的矢量化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60043840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档