Векторизованный круг - PullRequest
0 голосов
/ 06 июля 2019

У меня есть цикл for, который сдвигает сигнал на определенную величину и добавляет его в массив.Как я могу векторизовать участок кругового смещения, чтобы мне не нужно было использовать цикл for?

fs_rate=10
len_of_sig=1; %length of signal in seconds
t=linspace(0,len_of_sig,fs_rate*len_of_sig);

y=.5*sin(2*pi*1*t);
for aa=1:length(y)
  y_new(aa,:)=circshift(y,[1,aa+3]); %shifts signal and appends to array

end
plot(t,y_new)

Plot

PS: я использую Octave4.2.2 Ubuntu 18.04 64bit

1 Ответ

2 голосов
/ 06 июля 2019

Вы можете использовать gallery для создания круговой матрицы после использования circshift для базового сдвига:

base_shift = 4;
fs_rate = 10;
len_of_sig = 1; # length of signal in seconds
t = linspace (0, len_of_sig, fs_rate*len_of_sig);
y = .5 * sin (2*pi*1*t);
y = gallery ("circul", circshift (y, [1 base_shift]));

Или, если вы хотите узнать, как это было реализовано, взгляните на егоисходный код type gallery

...