Разбить вектор на меньшие векторы в Matlab - PullRequest
1 голос
/ 26 марта 2019

Есть ли эффективный способ сделать следующее?

У меня есть этот вектор:

0.923
0.757
0.552
0.298
0.079
0.925
0.769
0.565
0.297
0.075
0.927
0.777
0.572
0.294
0.072
0.931
0.778
0.57
0.292
0.07
0.933
0.78
0.566
0.293
0.075

Я хочу разделить этот вектор на более мелкие векторы, каждый из которых состоит из 5 значений, идобавив 1 в верхней части и 0 в конце каждого вектора следующим образом:

1
0.923
0.757
0.552
0.298
0.079
0

1
0.925
0.769
0.565
0.297
0.075
0

1
0.927
0.777
0.572
0.294
0.072
0

1
0.931
0.778
0.57
0.292
0.07
0

1
0.933
0.78
0.566
0.293
0.075
0

Могу ли я использовать cumsum, чтобы найти разницу между значениями 1 и 2 в одном и том же векторе?например, первый вектор 0,923 - 1 = 0,077 и образует другой вектор с ответами?

1 Ответ

2 голосов
/ 26 марта 2019
v =[0.923
    0.757
    0.552
    0.298
    0.079
    0.925
    0.769
    0.565
    0.297
    0.075
    0.927
    0.777
    0.572
    0.294
    0.072
    0.931
    0.778
    0.57
    0.292
    0.07
    0.933
    0.78
    0.566
    0.293
    0.075];

A = reshape(v,5,[]);
A = [ones(1,size(A,2)) ; A ; zeros(1,size(A,2))]

A =

   1.00000   1.00000   1.00000   1.00000   1.00000
   0.92300   0.92500   0.92700   0.93100   0.93300
   0.75700   0.76900   0.77700   0.77800   0.78000
   0.55200   0.56500   0.57200   0.57000   0.56600
   0.29800   0.29700   0.29400   0.29200   0.29300
   0.07900   0.07500   0.07200   0.07000   0.07500
   0.00000   0.00000   0.00000   0.00000   0.00000
B = diff(A)

B =

  -0.077000  -0.075000  -0.073000  -0.069000  -0.067000
  -0.166000  -0.156000  -0.150000  -0.153000  -0.153000
  -0.205000  -0.204000  -0.205000  -0.208000  -0.214000
  -0.254000  -0.268000  -0.278000  -0.278000  -0.273000
  -0.219000  -0.222000  -0.222000  -0.222000  -0.218000
  -0.079000  -0.075000  -0.072000  -0.070000  -0.075000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...