作业帮 > 综合 > 作业

matlab中怎么将一列数据按照顺序平均分成矩阵.有快速的方法吗?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 20:44:01
matlab中怎么将一列数据按照顺序平均分成矩阵.有快速的方法吗?
例如[1;2;3;4;5;6;7;8;9;10;11;12...]
怎么分成
[1 2 3
4 5 6
7 8 9
10 11 12...]
或者
[1 4 7 10
2 5 8 11
3 6 9 12...]?
假设刚好可以分(如本例,数据量是3的倍数).有什么命令可以不遍历吗?数据量比较大.谢谢
matlab中怎么将一列数据按照顺序平均分成矩阵.有快速的方法吗?
假设x=[1;2;3;4;5;6;7;8;9;10;11;12...]是你的数据,
下面的代码可以实现你的功能:
A=zeros(length(x)/3, 3); % 预设矩阵A的大小
A(:,1) = x(1:3:end-2);
A(:,2) = x(2:3:end-1);
A(:,3) = x(3:3:end);

A就是你要的矩阵.
再问: 谢谢。我最终需要得到的是1080*3000的一个矩阵,感觉这个方法好像还是需要循环有些耗费资源。请问你怎么看 A = zeros(length(x)/3000,3000); for i = 1 : 3000 A(:,i) = x(i:3000:end-(3000-i)); end
再答: 上面的方法对少数行或列的比较适用,当行列都比较多时,可以这么做: A1 = reshape(x,3000,1080); A = A1';