我有一个问题,我无法找到任何解决方案,我的问题是,我有一个向量V (m x 1)
。 V
是从excel导入的数据,可以在leangth中有所不同。它包含数量> 7000的序列和数字序列<1。 7000.序列的长度也各不相同。现在我想将所有&gt; 7000的值复制到矩阵中。每当V
的值达到&gt; 7000时,矩阵应该开始一个新行。为了使矩阵的新行在长度上不同,较短的行应该被填充&#34;等于0,直到达到最长行的长度。
这是它应该如何运作的一个例子。
`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
的值得到&gt;时,首先将矢量分成几个较小的矢量。 7000.然后将它们组合到所需的矩阵并删除所有值&lt; 7000.但这对我来说似乎很不方便。
答案 0 :(得分:0)
解决方案可以使用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
为真。