【发布时间】:2015-09-08 12:46:11
【问题描述】:
我正在使用类似于 matlab 的 Octave 3.8.1,我正在尝试使用插值和 repmat 来改变信号的频率(因为这样做非常快(0.01 秒),我必须一次创建 28000+ 个)我可以将变量 num_per_sec 更改为任何整数,但如果我尝试将其更改为 2.1 或其中包含小数的任何内容,我会收到错误 “错误:重塑:无法将 44100x2 数组重塑为 92610x1 数组错误:调用自:第 10 行(repmat 行)”有没有人可以解决这个或另一个建议?
注意:请注意 ya 是一个简单的测试方程 我没有方程可以仅处理信号,因此仅更改频率变量是行不通的。
见下面的代码:
clear,clc
fs = 44100; % Sampling frequency
t=linspace(0,2*pi,fs);
freq=1;
ya = sin(freq*t)'; %please note that this is a simple test equation I won't have equations just the signal to work with.
num_per_sec=2 %works
%num_per_sec=2.1 %doesn't work
yb=repmat(ya,num_per_sec,1);%replicate matrix
xxo=linspace(0,1,length(yb))'; %go from 0 to 1 sec can change speed by incr/decr 1
xxi=linspace(0,1,length(ya))'; %go from 0 to 1 sec and get total samplerate from total y value
yi_t=interp1(xxo,yb,xxi,'linear');
plot(yi_t)
【问题讨论】:
标签: arrays matlab signal-processing octave