91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MATLAB調(diào)用C程序、調(diào)試和LDPC譯碼過程詳解

Hx ? 作者:工程師陳翠 ? 2018-07-12 01:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MATLAB是一個(gè)很好用的工具。利用MATLAB腳本進(jìn)行科學(xué)計(jì)算也特別方便快捷。但是代碼存在較多循環(huán)時(shí),MATLAB運(yùn)行速度極慢。如果不想放棄MATLAB中大量方便使用的庫(kù),又希望代碼能迅速快捷的運(yùn)行,可以考慮將循環(huán)較多的功能采用C編寫,MATLAB調(diào)用。本文將概述這一過程。雖然本文以LDPC譯碼算法為例,但不懂該算法不影響本文閱讀。

1. 起因

最開始用MATLAB寫的LDPC譯碼算法中,其中一個(gè)版本是這里,里面有三重循環(huán),運(yùn)行速度極慢。后來(lái)考慮了MATLAB的向量化操作,通過算法的合理劃分以及內(nèi)置函數(shù)調(diào)用,成功將三重循環(huán)修改為1層,具體這一版本的代碼可見這里。通過這一手段,函數(shù)的運(yùn)行速度提高了幾倍乃至幾十倍。雖然這一方法下運(yùn)行速度依舊比不過MATLAB工具箱中的comm.LDPCDecoder,遠(yuǎn)比不上利用GPU的comm.gpu.LDPCDecoder,但勝在可明確算法并具有一定擴(kuò)展性。

起初也注意到可以通過MATLAB調(diào)用C程序來(lái)加速程序運(yùn)行,但向量化后的代碼湊活能用,加上有時(shí)也可調(diào)用更為強(qiáng)大的內(nèi)置函數(shù),這一想法一直沒有付諸實(shí)踐。這幾天想好好整理一下代碼,遂萌發(fā)了寫一個(gè)C版本譯碼算法的想法。代碼現(xiàn)在的狀態(tài)是“能用”,這里把相關(guān)經(jīng)驗(yàn)總結(jié)分析在此。

2. MATLAB調(diào)用C程序

這一部分的內(nèi)容在劉曉輝的matlab調(diào)用C程序中已經(jīng)有較為詳細(xì)的介紹了,想要正確調(diào)用C程序,關(guān)鍵概括為2點(diǎn)。

機(jī)器上裝有MATLAB編譯器,可通過在MATLAB命令行窗口輸入mex -setup進(jìn)行具體設(shè)置。

有一個(gè)正確的接口子程序mexFunction完成MATLAB和C程序之間的數(shù)據(jù)轉(zhuǎn)換和程序調(diào)用

這里給出我寫得mexFunction(注意這個(gè)代碼寫得不好,沒有任何判斷,沒有健壯性……)

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {

double* llr = (double*)mxGetPr(prhs[0]);

int* rownum = mxGetPr(prhs[1]);

int* colnum = mxGetPr(prhs[2]);

int* trans = mxGetPr(prhs[3]);

double* state = mxGetPr(prhs[4]);

plhs[0] = mxCreateDoubleMatrix(1, state[1], mxREAL);

double* r =mxGetPr(plhs[0]);

ldpcDec( r ,llr, rownum,colnum, trans,state);

}

mexFunction的規(guī)范在劉曉輝的matlab調(diào)用C程序一文中已有提及,即

nlhs:輸出參數(shù)數(shù)目

plhs:指向輸出參數(shù)的指針

nrhs:輸入?yún)?shù)數(shù)目

prhs:指向輸入?yún)?shù)的指針

例如,在matlab命令行中使用

[a,b]=test(c,d,e)

調(diào)用mex函數(shù)test時(shí),傳給test的這四個(gè)參數(shù)分別是

2,plhs,3,prhs

其中:

prhs[0]=c

prhs[1]=d

prhs[2]=e

由此可以解釋上述mexFunction,而命令plhs[0] = mxCreateDoubleMatrix(1, state[1], mxREAL) 則定義了一大小為1 × state[1]的矩陣,做為函數(shù)的返回值。最后調(diào)用的ldpcDec是一個(gè)C程序,運(yùn)行C程序后plhs[0]指向的內(nèi)存空間存儲(chǔ)的就是滿足要求的計(jì)算結(jié)果。ldpcDec代碼如下

#include

#include

void ldpcDec(double*r,double* llr, int* rownum, int* colnum, int* trans, double* state){

//列有序,trans為映射關(guān)系

//rownum[i]-rownum[i-1],第i+1行的行重

//colnum[i]-colnum[i-1],第i+1列的列重

//state[0]:maxiter state[1]:llr & colnum 長(zhǎng)度 state[2] rownum 長(zhǎng)度,

//state[3]:H中非零元素個(gè)數(shù) state[4]: alpha

double* temp;

double* decodedtemp;

temp = (double*)malloc(sizeof(double)*state[3]);

decodedtemp = (double*)malloc(sizeof(double)*state[3]);

//init

int ii = 0;

for (int i = 0; i

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    189

    文章

    3001

    瀏覽量

    234077
  • C程序
    +關(guān)注

    關(guān)注

    4

    文章

    255

    瀏覽量

    36818
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    matlab來(lái)仿真turbo編譯碼程序

    matlab來(lái)仿真turbo編譯碼程序,有沒有完整的程序及仿真過程
    發(fā)表于 04-23 10:22

    怎樣設(shè)計(jì)基于CMMB系統(tǒng)的LDPC譯碼器?

    低密度奇偶校驗(yàn)(LowDensityParityCheck,LDPC)碼是由Gallager博士在1962年首次提出來(lái)的,由于LDPC碼的誤碼性能能夠逼近香農(nóng)限,因而在無(wú)線通信、衛(wèi)星通信等領(lǐng)域都得
    發(fā)表于 08-23 07:22

    大圍數(shù)QC_LDPC碼的譯碼器該怎么設(shè)計(jì)?

    LDPC碼是近年來(lái)發(fā)展較快且日趨成熟的一種信道編碼方案,因其具有的優(yōu)越性能和實(shí)用價(jià)值而被人們認(rèn)知,但由于隨機(jī)結(jié)構(gòu)的LDPC碼編譯碼器硬件實(shí)現(xiàn)較為復(fù)雜,具有的準(zhǔn)循環(huán)特性QC_LDPC碼已
    發(fā)表于 09-30 07:19

    LDPC碼與RS碼的聯(lián)合迭代譯碼

    針對(duì)LDPC碼與RS碼的串行級(jí)聯(lián)結(jié)構(gòu),提出了一種基于Chase的聯(lián)合迭代譯碼方法。軟入軟出的RS譯碼器與LDPC譯碼器之間經(jīng)過多次信息傳遞,
    發(fā)表于 05-12 21:47 ?22次下載

    IEEE 802.16e中LDPC譯碼器的實(shí)現(xiàn)

    面向IEEE 802.16e 中 LDPC 碼,分析了各種譯碼算法的譯碼性能,歸一化最小(NMS)算法具備較高譯碼性能和實(shí)現(xiàn)復(fù)雜度低的特點(diǎn)。提出一種基于部分并行方式的
    發(fā)表于 08-05 08:46 ?24次下載

    基于LDPC譯碼軟信息的迭代載波恢復(fù)

    基于LDPC譯碼軟信息的迭代載波恢復(fù):針對(duì)較低信噪比(≤2 dB)下載波恢復(fù)難題,該文提出了基于LDPC 軟信息的迭代載波恢復(fù)算法。該算法以最大化LDPC 軟信息絕對(duì)值的和為準(zhǔn)則,對(duì)載
    發(fā)表于 10-29 13:03 ?18次下載

    LDPC譯碼

    LDPC譯碼LDPC碼是一種線性分組奇偶校驗(yàn)碼,它采用基于因子圖的置信傳播(Belief Propagation,BP)迭代譯碼算法進(jìn)行譯碼
    發(fā)表于 03-01 17:36 ?2201次閱讀
    <b class='flag-5'>LDPC</b>編<b class='flag-5'>譯碼</b>

    基于最小和高效LDPC譯碼算法

    針對(duì)低密度奇偶校驗(yàn)(LDPC)譯碼算法性能低的問題,提出一種基于最小和的高效譯碼算法。該算法從概率的角度分析消息的傳遞過程中校驗(yàn)節(jié)點(diǎn)的更新過程
    發(fā)表于 05-18 18:54 ?0次下載
    基于最小和高效<b class='flag-5'>LDPC</b><b class='flag-5'>譯碼</b>算法

    高速通用LDPC譯碼技術(shù)

    香農(nóng)的學(xué)生Gallager首次提出了LDPC碼的概念和完整的譯碼方法,目前LDPC碼正向著高速高增益的方向發(fā)展。文中針對(duì)目前對(duì)高速LDPC譯碼
    發(fā)表于 07-26 11:17 ?0次下載

    MIMO系統(tǒng)中基于因子圖的聯(lián)合迭代檢測(cè)和LDPC譯碼

    MIMO系統(tǒng)中基于因子圖的聯(lián)合迭代檢測(cè)和LDPC譯碼_王忠勇
    發(fā)表于 01-07 16:00 ?0次下載

    LDPC C++11版本程序下載

    利用C++仿真了LDPC碼,譯碼采用了基于對(duì)數(shù)似然比的BP算法。編碼矩陣可以在根文件夾中選擇。
    發(fā)表于 03-29 09:22 ?0次下載

    基于FPGA 的LDPC 碼編譯碼器聯(lián)合設(shè)計(jì)

    該文通過對(duì)低密度校驗(yàn)(LDPC)碼的編譯碼過程進(jìn)行分析,提出了一種基于FPGA 的LDPC 碼編譯碼器聯(lián)合設(shè)計(jì)方法,該方法使編碼器和
    發(fā)表于 11-22 07:34 ?4790次閱讀
    基于FPGA 的<b class='flag-5'>LDPC</b> 碼編<b class='flag-5'>譯碼</b>器聯(lián)合設(shè)計(jì)

    c#調(diào)用matlab函數(shù)

    本文檔內(nèi)容介紹了基于c#調(diào)用matlab函數(shù),供參考
    發(fā)表于 04-19 10:53 ?24次下載

    MATLAB程序調(diào)試的方法及工具介紹

    MATLAB程序設(shè)計(jì)之MATLAB程序調(diào)試的方法及工具介紹。
    的頭像 發(fā)表于 07-13 17:50 ?7175次閱讀
    <b class='flag-5'>MATLAB</b><b class='flag-5'>程序</b><b class='flag-5'>調(diào)試</b>的方法及工具介紹

    C調(diào)用matlab方法

    C調(diào)用matlab方法介紹
    發(fā)表于 07-31 10:55 ?0次下載
    主站蜘蛛池模板: 最新日本免费一区二区三区中文 | 777777777妇女亚洲 | 明日花绮罗snis-862在线播放 | 色偷偷网址 | 欧美一级日韩一级亚洲一级 | 中国特级毛片 | 美女被免费网站视频在线 | 222aaa免费国产在线观看 | 国产色爽女小说免费看 | 无遮挡很爽很污很黄在线网站 | v片视频 | 综合色爱| 丁香狠狠色婷婷久久综合 | av在线色 | 亚洲国产精品热久久2022 | 色多多在线看 | 男人j进女人j的视频一进一出 | 亚洲天堂一区二区三区 | 特级一级毛片视频免费观看 | 两性色午夜视频免费老司机 | 国内自拍网红在综合图区 | 狠狠色狠狠色综合日日小蛇 | 亚洲va久久久噜噜噜久久男同 | 中年艳妇乱小玩 | 免费看一级黄色录像 | 黄色免费在线网站 | www.av小视频| 日本不卡在线观看免费v | 天堂网最新版中文 | 在线色站 | 亚洲色图22p | 欧美一区二区视频在线观看 | 免费精品美女久久久久久久久久 | 你懂的在线免费观看 | 五月婷婷色丁香 | 嫩草影院播放地址一二三 | 国产高清在线视频 | 黄色四虎影院 | 天天干在线播放 | 免费福利片2022潦草影视午夜 | 五月天天 |