linspace_make.m
来自「student teacher and proferssor llove thi」· M 代码 · 共 96 行
M
96 行
function [modlist,funlist,fun_info]=linspace_make(typestrlist)% fun_info is a 1x2 cell. fun_info{1}=>1 result is pointer, 0=>not% fun_info{2}=>typestr ('r' or 'c' usually)declare_globalsfunname='linspace';modlist='';funlist='';r=[char(10)];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%modlist=[modlist,... ' interface ',funname,'f',r];if ~iscell(typestrlist) typestrlist={typestrlist};endfor i=1:length(typestrlist) typestr=typestrlist{i}; typestr2=typestr; for m=1:length(typestr) temp2=any(strcmp(typestr(m),{'d','m'})); if temp2,typestr2(m)='c';end temp2=any(strcmp(typestr(m),{'e','n'})); if temp2,typestr2(m)='r';end temp2=any(strcmp(typestr(m),{'f','o'})); if temp2,typestr2(m)='i';end temp2=any(strcmp(typestr(m),{'g','p'})); if temp2,typestr2(m)='l';end end [modlist,funlist,len]=makeheader('linspace',2,typestr,modlist,funlist,r); fun_info{2}='i'; temp{1}='integer'; for k=1:length(typestr) if any(strcmp(typestr(k),typs{3})) fun_info{2}='c'; temp{1}='complex'; elseif any(strcmp(typestr(k),typs{6})) fun_info{2}='r'; temp{1}='real'; end end if length(typestr)<3 funlist=[funlist,' ',temp{1},', dimension(1,100) :: out',r]; else temp1{1,1}=''; temp1{2,1}=''; temp1{2,2}=''; if any(strcmp(typestr(3),typs{11})) %2-D temp1{1,1}='(1,1)'; elseif any(strcmp(typestr(3),typs{4}))%1-D temp1{1,1}='(1)'; end if ~any(strcmp(typestr(3),typs{7})) %Not an integer temp1{2,1}='NInt('; temp1{2,2}=')'; end funlist=[funlist,' ',temp{1},', dimension(1,',temp1{2,1},'in_3',temp1{1,1},'',temp1{2,2},') :: out',r]; end wantsizes=0; funlist=makesize1(wantsizes,funlist,len,r); %Here we can insert any global vars or preliminary options %%%%%% prelim=''; for ii=1:2 if any(strcmp(typestr(ii),typs{3})) prelim=[prelim,' complex temp',num2str(ii),r]; else prelim=[prelim,' real temp',num2str(ii),r]; end end prelim=[prelim,' real increment',r]; prelim=[prelim,' integer temp3, i',r]; funlist=[funlist,prelim]; funlist=makesize2(wantsizes,funlist,len,r,typestr); %Here we can insert type dependant things %%%%%%%%%%%%%%%%%%%%%%% for ii=1:length(typestr) temp1{1,1}=''; if any(strcmp(typestr(3),typs{11})) %2-D temp1{1,1}='(1,1)'; elseif any(strcmp(typestr(3),typs{4}))%1-D temp1{1,1}='(1)'; end funlist=[funlist,[' temp',num2str(ii),'=in_',num2str(ii),temp1{1,1}],r]; end %And now the kernel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if length(typestr)<3 kernel=[' temp3=100',r]; else kernel=['']; end kernel=[kernel,' increment=(temp2-temp1)/(dble(temp3)-1)',r]; kernel=[kernel,' out(1,1)=temp1',r]; kernel=[kernel,' do i=2,temp3',r]; kernel=[kernel,' out(1,i)=out(1,i-1)+increment',r]; kernel=[kernel,' end do',r]; funlist=[funlist,kernel]; %End of the function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% funlist=[funlist,' end function ',funname,'f_',typestr2,r]; if strcmp(typestr,typestrlist{length(typestrlist)}) else funlist=[funlist,r]; endend%Typestr loop%And end the module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%modlist=[modlist... ' end interface ',funname,'f',char(10)];fun_info{1}=0;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?