我正在 MATLAB 上编写一个程序,它生成 13 个不同幅度、持续时间和频率的波形。每个波形重复 5 次,这意味着我总共有 65 次“试验”。
每个试验的总长度 = 1.5 毫秒。采样频率 = 4 kHz。我希望波浪从 0.5 毫秒开始。在波浪开始之前和偏移之后,我希望幅度为零(即波浪之前和之后的“平线”)。
我创建了一个 65x3 矩阵,其中的列表示 65 个正弦波的频率 ('hz')、幅度 ('a') 和持续时间 (ms)。每行表示一个波。
我想使用这个 65x3 矩阵中包含的信息来生成 65 个幅度为“a”、频率为“hz”、持续时间为“ms”的正弦波。具体来说:每个波都应使用矩阵第 n 行中指定的参数 (hz,a,ms) 创建。例如,如果第 1 行 = 100、1、50... 这意味着我想生成一个持续 50 毫秒的 100 Hz 正弦波(幅度 = 1)。
我试图构建一个 for 循环来解决这个问题。但是,循环返回了许多错误,我不知道如何解决它们。我已将代码调整到不返回错误的程度;然而,我最近的尝试似乎产生了 65 个相同持续时间的波,而实际上每个波的持续时间应该是向量“ms”中所述的持续时间。
这是我最新的尝试,尽管是新手,但仍然不成功:(请注意,“试验”代表上面讨论的 65x3 矩阵;mA = 幅度)。
hz=trials(:,1); mA=trials(:,2); ms=trials(:,3);
trials_waves=zeros(65,500); % the max duration (= 500ms); unsure of this part?
for n = 1:size(order,1)
trials_waves = mA*sin(2*pi*hz*0:ms);
end
抱歉,如果提供的信息很少。这是我第一次在这个网站上提问。如果需要,我可以提供更多信息。
谢谢您的帮助。
最好的,H