假设我们要使用模式创建一个向量:
[1 3 5 7 9]
我们可以轻松地写
1:2:10
但是,如果我想要这种模式,我应该写些什么:
[1 2 5 6 9 10 13 14 17 18 ....]
?
这背后的想法是我有一个很长的列矩阵:
[-0.41416 0.37756 -3.39666 -0.42352 0.83481 -0.66782 -0.75471 0.54008 -0.60284 -1.43141 -1.10128 -0.18244]
我想把它变成:
[-0.41416 0.37756 0 0 -3.39666 -0.42352 0 0 0.83481 -0.66782 0 0 -0.75471 0.54008 0 0 -0.60284 -1.43141 0 0 -1.10128 -0.18244 0 0]
对于每2个值,我想添加两个零。
如果我只想在每个值之间都设置0零,这就是解决方法。
l = length(g);
nu = rows(g);
G = zeros(nu, l*nu);
for i = 1:nu
G(i, i:nu:l*nu-1+i) = g(i, 1:l);
end
g = G;
该代码将改变这种模式
[1.4392e-04 5.6149e-07 1.4572e-04 -1.1104e-05 1.4720e-04 -3.3176e-05 1.4836e-04
2.4174e-04 6.5988e-06 2.7917e-04 5.3787e-06 3.1924e-04 1.0706e-06 3.6204e-04]
变成这个模式:
[0.000221 0.000000 -0.000420 0.000000 0.000570 0.000000 -0.000418 0.000000
0.000000 0.017647 0.000000 -0.002033 0.000000 0.017248 0.000000 -0.001855]
您可以堆叠两个行向量(第二个等于一个加上第一个),然后对其进行整形:
>> a=[1:4:17];
>> b=reshape(vertcat(a,a+1),1,[])
b =
1 2 5 6 9 10 13 14 17 18
相同的想法扩展到您的第二个“此原因背后的原因”示例:
>> c=[-0.41416 0.37756 -3.39666 -0.42352 0.83481 -0.66782 -0.75471 0.54008 -0.60284 -1.43141 -1.10128 -0.18244];
>> d=reshape(c,2,[]);
>> e=reshape(vertcat(d,0*d),1,[])
e =
Columns 1 through 12
-0.4142 0.3776 0 0 -3.3967 -0.4235 0 0 0.8348 -0.6678 0 0
Columns 13 through 24
-0.7547 0.5401 0 0 -0.6028 -1.4314 0 0 -1.1013 -0.1824 0 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句