我需要在矢量中存储矩阵的每一行。如果矩阵是这样的:
mtx = 0 3 4
3 0 1
4 1 0
载体将是:
vec1 = 0 3 4
vec2 = 3 0 1
vec3 = 4 1 0
我该怎么办?请注意,我不知道会有多少向量(在代码时)。
答案 0 :(得分:0)
vec1 = mtx(1,:)
vec2 = mtx(2,:)
vec3 = mtx(3,:)
如果你有更多的向量(运行前的未知数),可以使用单元格数组
[m, n] = size(mtx);
for i = 1:m
vec{i} = mtx(i, :);
end;
现在vec{i}
包含i
行向量。您应该认为这是否是您真正想要的,因为您只需使用mtx(i,:)
。
答案 1 :(得分:0)
如果不使用eval,则无法动态创建变量。最好的方法是创建结构的dynamically字段,如下所示:
s = struct();
for rowi = 1:size(mtx, 1)
s.(sprintf('var%d', rowi)) = mtx(rowi,:)
end
这给出了:
s =
var1: [0 3 4]
var2: [3 0 1]
var3: [4 1 0]
答案 2 :(得分:0)
这是“不推荐”的答案(这就是为什么没有人发布它的原因)!
mxt = [ 0 3 4;
3 0 1;
4 1 0];
for i = 1 : size(mxt,1)
eval(['vec',num2str(i),' = mxt(',num2str(i),',:);'])
end
给你,
vec1 = [0 3 4];
vec2 = [3 0 1];
vec3 = [4 1 0];