如何利用Matlab產生單音訊號

2021-09-29 07:39:32 字數 1105 閱讀 1413

單音訊號,既單一頻率的訊號,在測試ifft/fft正確性時,我們常常用到單音訊號,一般需要的單音訊號時是複數形式;

fm = 2e6 ;  %訊號頻率

fs = 122.88e6; %取樣速率

w = 2*pi*fm;

dt = 1/fs;

t = 0:dt:dt*3275; %3276個點

data = exp(j*w*t);

通過尤拉公式可知,利用 exp(j*w*t)即可生成單音訊號,頻率和取樣率需要根據測試需求自定義;

如果是工程中進行測試,需要將matlab生成的資料進行儲存,此時需要進行定點化;

matlab中複數為double型,每個資料佔據64bit,我們需要將其轉化為16bit,其中可以選擇多少位有效;

在進行定點化前,我們需要先對資料進行歸一化,既除以訊號幅度最大的值,

datainput = fft(data,4096)./2906; ;

此時完成了歸一化,然後進行定點量化,

vector_in_real = (2^12-1)*real(datareshape);

vector_in_imag = (2^12-1)*imag(datareshape);

我選擇的是13位有效,且是有符號位,所以乘以(2^12-1);之後通過round函式進行擷取即可;

vector_real = round(vector_in_real);

vector_imag = round(vector_in_imag);

在工程中,通常不使用.bin 檔案,如果使用.mat檔案,使用c/c++開啟時需要matlab庫函式,此時最好的選擇是儲存為txt檔案,然後以陣列的形式讀取資料;

fid_lpf = fopen('single_data.txt','w');

fprintf(fid_lpf,'%3d,%3d,%3d,%3d,%3d,%3d,%3d,%3d,\n',singleout);

fclose(fid_lpf);

下面講述如何在c語言中開啟txt檔案,

int16_t test[32760]=

#include "single_data.txt"

通過這種方式即可開啟將檔案中的資料以陣列的方式儲存在test中;

Matlab矩陣的產生

1.簡易陣列 matlab的運算事實上是以陣列 array 及矩陣 matrix 方式在做運算,而這二者在matlab的基本運算性質不 同,陣列強調元素對元素的運算,而矩陣則採用線性代數的運算方式。而宣告一變數為陣列或是矩陣時,如果是要個別鍵入元素,須用中括號 將元素置於其中。陣列為一維元素所構成,...

MATLAB 產生頻寬訊號

clc clear all close all 產生中心頻率150mhz 頻寬50mhz,取樣率252mhz的頻寬訊號 tp 65.015e 6 發射時寬.控制點數.比如要輸出的點數是l,tp l fs 16384 252e6 65.015e 6 b 50e6 發射頻寬 k b tp 發射調頻率 f...

如何利用matlab 進行進製轉換

例如 120010代表12時00分10秒,將其轉換為以秒為單位的數字 例如120010代表12時00分10秒,將其轉換為以秒為單位 time 120010 取出最後兩位 time10 mod time,100 刪掉最後兩位 time11 fix time.100 取出中間兩位 分鐘 並乘以 60 t...