gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:34:42 26 4
gpt4 key购买 nike

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

[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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com