在变量中存储矩阵的行 - MATLAB

时间:2014-11-29 22:31:49

标签: arrays string matlab variables matrix

我需要在矢量中存储矩阵的每一行。如果矩阵是这样的:

 mtx = 0     3     4     
       3     0     1     
       4     1     0

载体将是:

vec1 = 0 3 4
vec2 = 3 0 1
vec3 = 4 1 0

我该怎么办?请注意,我不知道会有多少向量(在代码时)。

3 个答案:

答案 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];