我有一个3xN数据矩阵,例如:
x = [1,2,3;
4,5,6;
7,8,9] 我希望将其转换为向量的1xN向量,每一行都是向量,例如
y = [[1,2,3];
[4,5,6];
[7,8,9]] 我怎样才能做到这一点?
发布于 2020-02-03 17:07:30
num2cell就是这样做的:
y = num2cell(x, 2); % specify 2nd dimension其结果是向量的单元数组:
>> 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发布于 2020-02-03 17:04:02
根据定义,向量或矩阵的元素是标量,在matlab中向量是不可能的。您可以使用向量{[1,2,3];[4,5,6];[7,8,9]}的单元格数组。
发布于 2020-02-03 17:05:21
在MATLAB中,矩阵(或相同类型的数字向量)只能有标量元素,如您的x示例所示。
要实现y,您必须使用一个单元格数组,该数组可以使用arrayfun创建
>> 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] )进行索引。请注意,您现在不能利用原始矩阵可以提供给代码中的任何数学操作的矢量化。
https://stackoverflow.com/questions/60043840
复制相似问题