Matlab中MUSIC函數轉爲C語言

1.在MATLAB中自己寫好封裝的函數music.m後,在新建m文件編寫數據輸入,其中pulse0是已經產生好的數據矩陣:

2.將測試矩陣pulse0.mat轉爲txt格式,方便後續轉化爲C語言的測試使用;這裏需要注意矩陣轉爲txt是以列向量存儲,因爲後面C程序是通過一列一列的讀取數據存儲在一維數組中,因此這裏應該採用先讀列數據,後讀行數據進行txt的寫入。b爲列的大小,a爲行的大小:

3.自此寫好的3個M文件應該放在一個文件夾中,便於後續C的生成。工程目錄也應與自己編寫的M文件在同一個目錄下面。

4.在定義輸入類型時需要注意,pulse0的大小不定,因此需要設置X的大小爲Variable-Size,右鍵點擊X變量即可設置。

5.編譯通過後將產生的C文件拷貝的自己的C工程下,打開main.c,MATLAB產生的C函數默認輸入爲0,因此我們需要進行修改。其中main函數中的initialize和terminate函數不需要修改,也不能註釋掉,否則無結果。打開main_music()函數

6.可以看到該子函數主要是對X和M的初始化操作,在這裏,常量M我們直接設置爲12,對於變量矩陣X,需要繼續打開argInit()函數

7.數組iv1中存儲X矩陣的維數,這裏爲5401*12。通過fopen函數和fscanf函數按格式讀取MATALAB存儲下來的txt數據,其中t1存儲實部,t2存儲數據虛部。

8.這兩層循環是對result結構體進行賦值操作,賦值順序爲第一行第一列存在result[0],第一行第二列存在result[5401],第一行第三列存在result[5401*2]中。

9.最後可以將初始化好的數據寫入txt中,便於驗證數據讀取是否正確。最後通過music算法進行計算,得出正確結果。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章