转换成向量矩阵:新行当值> X(Convert vector into matrix: New

2019-09-30 00:03发布

我有一个问题,我无法找到任何解决办法,我的问题是,我有一个矢量V (mx 1) V是从Excel导入的数据,并且可以在leangth不同。 它包含数字> 7000和数字序列的序列<7000的序列还可以在leangth不同。 现在,我想这是所有值> 7000拷贝到一个矩阵。 每次的价值V获得> 7000矩阵应该开始一个新行。 因此,矩阵的新行不会leangth不同,较短的行应该是“填补” 0直至达到最长行的leangth。

这是它应该如何工作的例子。

`V [18x1]: [6000, 6500, 5000, 8000, 15000, 15500, 16000, 6000, 4000, 16500, 14000, 400, 5000, 6000, 9000, 12000, 13000, 5000]`

`Matrix [3x4]: 
1.row [8000 15000 15500 16000] 
2.row [16500 14000 0 0] 
3.row [9000 12000 13000 0]`

我首先想到分裂向量的成几个较小的载体各自的价值时V变> 7000,又重新将它们组合到所需的基质,并删除所有值<7000但这似乎相当不方便给我。

Answer 1:

一个解决方案可以是使用for

result = []; new_row = 1; col_num = 1; row_num = 0;
limit = 7000;
for idx = 1:length(V)
    if(V(idx) > limit && new_row == 0) % case 1
        result(row_num, col_num) = V(idx);
        col_num = col_num + 1;
    elseif(V(idx) > limit && new_row == 1) %case 2
        row_num = row_num + 1; new_row = 0; col_num = 2;
        result(row_num, 1) = V(idx);
    elseif(V(idx) <= limit) %case 3
         new_row = 1;
    end
end

case 1 ,如果创建了该行之前是真实的,并且没有V(j) < limit行创建之后。

case 2 ,如果在此之前为真V(idx-1) < limit) 。 和case 3为真,如果V(idx) <= limit



文章来源: Convert vector into matrix: New row when value > X