ts=[-1,0];
function sys=mdlOutputs(t,x,u) if u>=0 & u<2 sys=u*u;
elseif u>=2 & u<5 sys=4;
elseif u>=5 & u<7 sys=14-2*u; else
sys=0; end
(2)模块的封装与测试参见教材Page 202
第11章 二、实验题
2. (1)建立EXCEL文件,如气温.xls
(2) Spreadsheet Link的安装与启动参见教材P206
(3)在Excel中选中需要的数据,单击Spreadsheet Link工具栏的“putmatrix”按钮,指定导入MATLAB工作空间的变量名。
(4)单击Spreadsheet Link工具栏中的“wizard”按钮,弹出“MATLAB Function Wizard”对话框。在“Select a category”栏内选择matlab\\polyfun 类后,在“Select a function”栏选择spline函数,在“Select a function signature”栏内中选中spline(x,y,xx),弹出“Function Arguments”对话框。在对话框中的Inputs栏X右边的展开按钮,然后选中EXCEL表中的第1列数据(除标题行),按Enter键确认,返回“Function Arguments”对话框。单击对话框Inputs栏右部的下拉条,使变量变为Y,同样的方式设定Y的值,接着设定XX变量的值。然后单击Optional output cell(s) 右边的展开按钮,在Excel表中选中输出数据使用的单元格,返回对话框后单击OK按钮,完成计算。 3.
clear all
fid=fopen('exercise9_1.m','r'); textall=fscanf(fid,'%c',inf); ch=zeros(26,1);
for n=1:size(textall,2) if isletter(textall(n))
if textall(n)>='a' && textall(n)<='z'
textall(n)=char(textall(n)-('a'-'A')); end
m=textall(n)-'A'+1; ch(m)=ch(m)+1; end end
4.
(1)编辑c源程序exercise11_4.c,代码如下:
#include
#include
#include
#define k2 71
int main() { MATFile *pmat;
mxArray *pa1, *pa2, *pa3; double data[k1][k2];
const char *file = \; char str[BUFSIZE]; int status; int n1,n2;
for(n1=0;n1 data[n1][n2]=pow((n1+1.0)*(n2+1),1/3.0); printf(\, file); pmat = matOpen(file, \); if (pmat == NULL) { printf(\, file); printf(\); return(EXIT_FAILURE); } pa1 = mxCreateDoubleMatrix(k1,k2,mxREAL); if (pa1 == NULL) { printf(\, __FILE__, __LINE__); printf(\); return(EXIT_FAILURE); } pa2 = mxCreateDoubleMatrix(k1,k2,mxREAL); if (pa2 == NULL) { printf(\, __FILE__, __LINE__); printf(\); return(EXIT_FAILURE); } memcpy((void *)(mxGetPr(pa2)), (void *)data, sizeof(data)); pa3 = mxCreateString(\); if (pa3 == NULL) { printf(\, __FILE__, __LINE__); printf(\); return(EXIT_FAILURE); } status = matPutVariable(pmat, \, pa1); if (status != 0) { printf(\, __FILE__, __LINE__); return(EXIT_FAILURE); } status = matPutVariableAsGlobal(pmat, \, pa2); if (status != 0) { printf(\); return(EXIT_FAILURE); } status = matPutVariable(pmat, \, pa3); if (status != 0) { printf(\, __FILE__, __LINE__); return(EXIT_FAILURE); } memcpy((void *)(mxGetPr(pa1)), (void *)data, sizeof(data)); status = matPutVariable(pmat, \, pa1); if (status != 0) { printf(\, __FILE__, __LINE__); return(EXIT_FAILURE); } mxDestroyArray(pa1); mxDestroyArray(pa2); mxDestroyArray(pa3); if (matClose(pmat) != 0) { printf(\,file); return(EXIT_FAILURE); } pmat = matOpen(file, \); if (pmat == NULL) { printf(\, file); return(EXIT_FAILURE); } pa1 = matGetVariable(pmat, \); if (pa1 == NULL) { printf(\); return(EXIT_FAILURE); } if (mxGetNumberOfDimensions(pa1) != 2) { printf(\); return(EXIT_FAILURE); } pa2 = matGetVariable(pmat, \); if (pa2 == NULL) { printf(\); return(EXIT_FAILURE); } if (!(mxIsFromGlobalWS(pa2))) { printf(\); return(EXIT_FAILURE); } pa3 = matGetVariable(pmat, \); if (pa3 == NULL) { printf(\); return(EXIT_FAILURE); } status = mxGetString(pa3, str, sizeof(str)); if(status != 0) { printf(\); return(EXIT_FAILURE); } if (strcmp(str, \)) { printf(\); return(EXIT_FAILURE); } /* clean up before exit */ mxDestroyArray(pa1); mxDestroyArray(pa2); mxDestroyArray(pa3); if (matClose(pmat) != 0) { printf(\,file); return(EXIT_FAILURE); } printf(\); return(EXIT_SUCCESS); } (2)在MATLAB命令窗口输入以下命令编译(假定本机安装的编译器是Microsoft Visual Studio 2005) optsfile = [matlabroot '\\bin\\win32\\mexopts\\msvc80engmatopts.bat']; mex('-f',optsfile,'exercise11_4.c') (3)编译完成后,运行exercise11_4.exe 5. (1)编辑c源程序exercise11_5.c,代码如下: #include Engine *ep; mxArray *X = NULL, *Y = NULL; char buffer[BUFSIZE+1]; double x[100] ,y[100]; int n; for( n=0;n<100;n++) { x[n]=(n+1)/100.0;y[n]=(n+1)/100.0;} if (!(ep = engOpen(\))) { fprintf(stderr, \); return EXIT_FAILURE; } X = mxCreateDoubleMatrix(1, 100, mxREAL); memcpy((void *)mxGetPr(X), (void *)x, sizeof(x)); Y = mxCreateDoubleMatrix(1, 100, mxREAL); memcpy((void *)mxGetPr(Y), (void *)y, sizeof(y));

