Matlab中如何將長字串換行寫

2021-07-25 03:43:46 字數 2141 閱讀 4993

舉例如下:

% port definition

fprintf(fid,[...

'\n'...

'input clk;'

'\n'...

'input rst_n;'

'\n'...

'input [%d:0] msg;'

'\n'...%row-1

'input in_valid;'

'\n'...

'output reg [%d:0] codeword;'

'\n'...%col-1

'output reg out_valid;'

'\n'...

],row-1,col-1);

最近在搞畢設的東西,其中有乙個需要寫很麻煩的verilog檔案。麻煩但是卻不複雜,ldpc的編碼器,大概就是乙個200多bits寬的輸入訊號,500多bit寬的輸出訊號,輸出每個bit都是由某些輸入的bit進行相同的運算得到的,用乙個200多*500多的矩陣表示對應關係。如果要單純寫verilog,會死人的,如果在verilog裡寫生成邏輯,又要占用很大的記憶體來存放生成矩陣,而且邏輯難寫。於是就想到用matlab**來生成verilog**。

matlab裡有fprintf函式可以輸出資料到檔案。

舉個栗子,fprintf(fid,'hello world!');就可以把「hello world!」輸出到fid對應的檔案中。

開啟檔案的函式是fid = fopen('filepath/filename.postfix','w');其中w表示寫入,如果是讀取則換成r,更多用法請help fopen

那麼問題來了,如果我把verilog**的每一行分別用乙個fprintf輸出,那麼我的.m檔案就會充斥著一大堆fprintf,我這個強迫症對這種高度重複的**簡直不能忍。但是如果我把每個功能塊單獨寫在乙個fprintf裡,可讀性確實高很多,但是fprintf那行就會很長,同樣不能忍,並且修改的時候會非常痛苦!

於是我就去找有沒有類似linux指令碼中『\』的換行符,讓直譯器把多行**當成一行去執行。

確實有這個換行符,

...←三個點就是matlab裡的換行符。可以將該行的尾部和下一行的頭部連線起來。

但是另乙個問題就出來了,這個換行符沒辦法用在字串中間,我把一整塊的**當成乙個字串,如果中間加上換行符,那麼直譯器會把換行符也當做要輸出的內容,一起輸出去了。

由於 fprintf 的引數分別為:檔案handler、輸出array、輸出資料(如有)。

舉栗子:fprintf( fid, 'data1: %d\n', data1);

其中中間的字串會被當成乙個只有乙個元素的array。

所以解決方法就來了,只要把中間的array多加幾個元素,就可以分割長字串,並在子字串之間新增換行符。

舉栗子:

% port definition

fprintf(fid,[...

'\n'...

'input clk;'

'\n'...

'input rst_n;'

'\n'...

'input [%d:0] msg;'

'\n'...%row-1

'input in_valid;'

'\n'...

'output reg [%d:0] codeword;'

'\n'...%col-1

'output reg out_valid;'

'\n'...

],row-1,col-1);

用單引號括起來的每乙個小字串會被解釋為輸出array的乙個元素,子字串之間用空格(可多個,至少乙個) 或逗號隔開,即乙個單行的矩陣(array)。

中括號必不可少,是將各子字串結合為乙個array的標識。

另外因為verilog裡經常需要輸出類似3b'101之類的東西,而單引號會被當做元素的起/止符。想要輸出單引號,就需要連續打2個單引號。比如:fprintf(fid, 'outdata <= 3''b101 ')。這也是為什麼兩個子字串中間至少要有乙個空格的原因,如果沒有空格就會被連線起來,並且中間多了個單引號。

如何將字串反轉

今天看看某某童鞋的部落格看到他寫的一題,如何將字串反轉,結果一看就感覺,既然客戶端可以完成,就用js。於是第一想法,將字串拆成陣列嘛,然後反轉,然後再join 組合嘛,這不就o了,於是立即下手 儘管還在複習可憐的固體物理,哎。var teststring document.getelementbyi...

如何將字串反轉?

1.stringbuilder的reverse 方法,最簡單 public static string reverse4 string s 2.使用字串陣列,實現從尾部開始逐個逆序放入字串 public static string reverse3 string s 3.使用string的chara...

java web開發中如何將字串轉碼

我們在web應用開發過程中經常遇到輸出某種編碼的字元,如iso8859 1等,如何輸出乙個某種編碼的字串?我們主要是通過string物件的getbyte iso 8859 1 utf 8 方法,其中第乙個引數是原始型別,第二個引數是我們要轉成的編碼型別 public string translate...