| |
看到wjw576657631记录的matlab应用于仿真时常用到的一些命令,记录一下,并且这里做些补充
通常应用matlab对图像或者其他序列转换应用matlab
对于处理的图像可以直接用maltab将其转为十六进制序列,就可以用其进行仿真,并且可以将仿真后的数据在转化为图像,查看效果。
同时matlab用来做静态图像的算法验证也很有效率
一 将图片转化为txt文本文件
a=imread('picture.bmp'); //读取picture.bmp图片
b=rgb2gray(a); //由rgb图片转化为灰度图
c=b'; //matlab由图片转换为矩阵是一列一列转的,txt文件数据读入矩阵也是一列一列读入的,后文以行为单位处理的话需要转置,后面还要再转置一次
fid0=fopen('data.txt','wt'); //在matlab工作目录创建并打开一个名为data.txt的文件,形式为可写
fprintf(fid0,'%x\n',c); //把灰度图矩阵b以16进制写入data.txt文件,没写入一个元素换一行
fclose(fid0); //关闭保存该data.txt文件
二 将txt文本文件读取为图片
法一:
fid0=fopen('data.txt','r'); //data.txt已存在与matlab工作目录,以读取形式打开该文件
[a,count]=fscanf(fid0,'%x');//a为data.txt文件数据读入的矩阵,以16进制形式,count为该矩阵元素个数
b=reshape(a,m,[]) //将矩阵a转换为图片大小的矩阵b,图片行长为m
c=b'; //需要再转置一次方为图片行列方向的矩阵
imshow(b,[]); //显示矩阵b为图片
若法一提示有错误,就用法二,具体原因有时间再研究,反正我不是做图像处理的,matlab用到哪就学到哪吧!
法二:
a0=load(data.txt'); //将txt文件数据读取入矩阵
b0=reshape(a0,m,[]); //将矩阵a转换为图片大小的矩阵b,图片行长为m
c0=b0'; //转置,原因同上
imshow(c0,[]); //显示图片
在verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”
filename”中的路径要用反斜杠'/',而不是斜杠'\',切记!
如$readmemh("F:/mydesigen/re_input.txt",re_input);上面的语句是正确的,而如果用斜杠
就有问题,如$readmemh("F:\mydesigen\re_input.txt",re_input)。
对于需要的txt文件,其格式为每行一个数据,例如用matlab产生文件则可以这样写
fid0 = fopen('F:\mydesigen\re_input.txt','w+');
fprintf(fid0,'%x \n',real(info));