matlab - 如何在 MATLAB 中创建具有 [1 2 5 6 9 10 13 14 17 18 ....] 模式的向量?

标签 matlab vector

假设我们要创建一个具有以下模式的向量:

[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

关于matlab - 如何在 MATLAB 中创建具有 [1 2 5 6 9 10 13 14 17 18 ....] 模式的向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372846/

相关文章:

c++ - 有什么方法可以在 matlab 中完成 i++ 吗?

arrays - 在数组中查找和乘以重复值的最快方法

c++ - 简单 vector 程序错误

c++ - 如何最好地快速填充 vector ?

c++ - 为什么我不能 push_back 到 const 元素的 vector ?

c++ - 将复 vector 展平并将其恢复为双 vector 并返回

C++将 vector 传递给函数模板

matlab - 在 matlab 绘图的刻度标签中打印 '_' 作为下划线

arrays - 在matlab中对结构体中的数据进行向量化

Matlab:按顺序重复每列n次