【发布时间】:2015-10-07 05:11:04
【问题描述】:
我需要编写将行向量转换为矩阵的代码。例如,如果我有a = 1 2 3 4 5 6 7 8 9,我希望矩阵是:
m = [1 2 3;
4 5 6;
7 8 9]
我有这个,它不起作用。谁能帮帮我?
for i=1:length(a)
m = a(i);
i = i + 1;
end
此外,我不允许使用任何Matlab的内置函数(例如reshape)。
【问题讨论】:
-
我不能使用 vec2mat 或 reshape
-
如果你的向量是 1x8,矩阵是 2x4 还是 4x2?还是仅适用于 3x3?如果您创建一个具有您希望结果大小的零矩阵(例如,
A=zeros(3,3)),那么您可以使用A(:)=a。您必须检查元素是否位于矩阵中的正确位置。 -
在 SO 上发布家庭作业通常不受欢迎,但正如你展示了你所尝试的那样,+1 =) 看看 Shai 对你的问题的编辑(你可以点击“编辑的 x 分钟前”链接)。你原来的循环不漂亮=)
-
请注意,for 循环会自动增加循环索引。 Matlab 中的循环语句
for i= 1:length(a)类似于java 或c++ 中的for (int i=1; i<=length(a); i++)。但是,可以假设实现比这更复杂,因为for i=a将执行与for (T t : a)类似的行为,其中 T 是它的类型。所以关键是你不需要在循环中增加i。它在 for 循环中隐式完成。
标签: matlab matrix vector reshape