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算法進行計算,得出正確結果。