在 MATLAB 中生成要保存在 .mif 文件中的正弦波
Posted
技术标签:
【中文标题】在 MATLAB 中生成要保存在 .mif 文件中的正弦波【英文标题】:Generating a sin wave to be saved in a .mif file in MATLAB 【发布时间】:2012-09-14 15:29:12 【问题描述】:我正在尝试生成前 5 秒为 500Hz
的正弦波,然后将 1000Hz
保存在 MATLAB 中的 .mif
文件中。这是我将用于将数据保存到.mif
文件的通用代码,但我不确定如何正确生成正弦波样本,以便它们可以包含在此代码中。采样频率为2000Hz
。
谢谢。
fid = fopen('filename.mif','w');
fprintf(fid,'WIDTH=16;\n');
fprintf(fid,'DEPTH=256;\n');
fprintf(fid,'ADDRESS_RADIX=UNS;\n');
fprintf(fid,'DATA_RADIX=DEC;\n');
fprintf(fid,'CONTENT BEGIN\n');
for k = 1:256
fprintf(fid,'%i : %i;\n',k-1,data(k));
end
fprintf(fid,'END;');
fclose(fid);
【问题讨论】:
.mif文件的采样率是多少; 1000 Hz 信号的持续时间是多少? .mif 文件的采样率为 2000Hz,时长是任意的。假设它应该是 10 秒。 【参考方案1】:这样就可以了,但我不确定你是否会喜欢结果:
aa = 0:(1/2000):5;
aa = aa(1:end-1);
bb = (0:(1/2000):10) + 5;
t = [ aa bb];
y1 = sin(2*pi*500*aa);
plot( aa, y )
y2 = sin(2*pi*1000*bb);
y = [y1 y2]
您会发现,500 Hz 信号的采样速度几乎不足以获得高、低和零交叉。 2000 Hz 是一团糟,因为需要采样大于两倍的信号带宽。这是作业吗?对我来说无所谓,只是好奇。
【讨论】:
有点。这是一个更大项目的测试的一部分。感谢您的帮助。以上是关于在 MATLAB 中生成要保存在 .mif 文件中的正弦波的主要内容,如果未能解决你的问题,请参考以下文章