色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

Hx ? 作者:工程師陳翠 ? 2018-07-12 01:49 ? 次閱讀

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

1. 起因

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

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

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

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

機器上裝有MATLAB編譯器,可通過在MATLAB命令行窗口輸入mex -setup進行具體設置。

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

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

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時,傳給test的這四個參數(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是一個C程序,運行C程序后plhs[0]指向的內(nèi)存空間存儲的就是滿足要求的計算結果。ldpcDec代碼如下

#include

#include

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

//列有序,trans為映射關系

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

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

//state[0]:maxiter state[1]:llr & colnum 長度 state[2] rownum 長度,

//state[3]:H中非零元素個數(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)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2974

    瀏覽量

    230385
  • C程序
    +關注

    關注

    4

    文章

    254

    瀏覽量

    36027
收藏 人收藏

    評論

    相關推薦

    matlab來仿真turbo編譯碼程序

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

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

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

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

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

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

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

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

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

    基于LDPC譯碼軟信息的迭代載波恢復

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

    LDPC譯碼

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

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

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

    高速通用LDPC譯碼技術

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

    LDPC C++11版本程序下載

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

    LDPC碼的譯碼停止準則

    提出了一種實用的LDPC譯碼停止準則,利用信息節(jié)點的對數(shù)概率似然比來控制迭代次數(shù),避開了設置停止準則門限,可以很快判斷出譯碼情況,較其他方法省去了大量繁雜的計算。
    發(fā)表于 09-07 19:38 ?10次下載
    <b class='flag-5'>LDPC</b>碼的<b class='flag-5'>譯碼</b>停止準則

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

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

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

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

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

    MATLAB程序設計之MATLAB程序調(diào)試的方法及工具介紹。
    的頭像 發(fā)表于 07-13 17:50 ?6828次閱讀
    <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次下載
    主站蜘蛛池模板: 日本理论片和搜子同居的日子2| 微福利92合集| 无码人妻视频又大又粗欧美| 亚洲日韩中文字幕区| 757一本到午夜宫| 国产精品久久毛片A片软件爽爽| 久久福利影院| 肉奴隷 赤坂丽在线播放| 一个人看的www视频动漫版| 啊…嗯啊好深男男小黄文| 果冻传媒视频在线播放| 女人爽得直叫免费视频| 亚洲 视频 在线 国产 精品| 97人妻精品全国免费视频| 国模沟沟一区二区三区| 欧美性猛交AAA片免费观看| 亚欧日韩毛片在线看免费网站| 777EY_卡通动漫_1页| 国产在线精彩亚洲久久| 欧美一级成人影院免费的| 亚洲欧美国产双大乳头| 成人动漫bt种子| 撅高 自己扒开 调教| 午夜视频体内射.COM.COM| AV久久久囯产果冻传媒| 精品久久久久久久99热| 色综合a在线| adc网址在线观看| 久久久精品国产免费A片胖妇女| 婷婷综合久久狠狠色| gratis videos欧美最新| 久久99re6国产在线播放| 特级毛片s级全部免费| av先锋影音资源男人站| 久久国产露脸老熟女熟69| 学生妹被爆插到高潮无遮挡| 成人国产精品玖玖热色欲| 美女一级毛片免费不卡视频| 亚洲日韩乱码人人爽人人澡人| 国产成年人在线观看| 日本枯瘦娇小|