收藏 分享(赏)

MATLAB 入门 第三章_MATLAB程序设计基础.doc

上传人:hskm5268 文档编号:7058445 上传时间:2019-05-04 格式:DOC 页数:20 大小:103.50KB
下载 相关 举报
MATLAB 入门 第三章_MATLAB程序设计基础.doc_第1页
第1页 / 共20页
MATLAB 入门 第三章_MATLAB程序设计基础.doc_第2页
第2页 / 共20页
MATLAB 入门 第三章_MATLAB程序设计基础.doc_第3页
第3页 / 共20页
MATLAB 入门 第三章_MATLAB程序设计基础.doc_第4页
第4页 / 共20页
MATLAB 入门 第三章_MATLAB程序设计基础.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第三章 MATLAB 程序设计基础chapter 3: Foundation of MATLAB program design一、 数据及数据文件(Data and Data file)1. 数据类型:(Data mode) 为适应各种不同计算和处理的需求,MATLAB 提供了多种数据类型,主要有:*数值数组(Numeric array)包括整形(int8,uint8,int16,uint16,int32,uint32)单精度(signal) 双精度(duble) (MATLAB 最常用的变量类型)稀疏数组(sparce)按维数分有一维、二维和多维数组Int- Integrate.整形数组Ui

2、nt-Unsigned Integer data 无符号整形数组*字符串数组(Character array):由字符串组成的数组*单元数组(Cell array):用不同类型和大小的数组组成的数组,同一个元胞数组中各元胞的内容可以不同。*结构数组(Structure array):与单元数组类似,但其数据的组织能力更强,更富于变化。*Java 类(Java class):由 JavaAPI 或第三方定义的类函数。*函数句柄(Function handle):可以在一个参数列表中传递,并使用 feval 运行.在工作空间浏览器中不同的数据类型有着不同的图标标识。2. 数据文件(Data fil

3、e)MATLAB 支持的各种数据文件(Readable file formats of MATLAB)的主要类型及其存取方法如下述: (1)二进制数据文件:(Binary date file) 以.mat 为扩展名。是标准的 MATLAB 数据文件,以二进制编码形式存储。.mat 文件可以由MATLAB 提供的 save 和 load 命令直接存取。(2)ASC码数据文件:(ASC code data file)扩展名为.txt, .dat 等, 可以是在 MATLAB 环境下存储的,也可能是其他软件的计算结果,可以被 MATLAB 调用,也可以用文本编辑器打开进行观察与修改。 可以用 sav

4、e 和 load 命令进行读入和存取。(3).图象文件:(Graphics file) 扩展名为.bmp, .jpg .tif 等,用于图形图象处理,可以用 imread 和 imwrite 命令进行读入和存取。(4).声音文件: (Sound file) 扩展名为.wav ,用 waveread 和 wavwrite命令进行读入和存取。Readable file formats. Data formats Command ReturnsMAT- MATLAB workspace load Variables in file.CSV- Comma separated numbers csvre

5、ad Double array.DAT- Formatted text importdata Double array.DLM- Delimited text dlmread Double array.TAB- Tab separated text dlmread Double array.Spreadsheet formatsXLS - Excel worksheet xlsread Double array and cell array.WK1- Lotus 123 worksheet wk1read Double array and cell array.Scientific data

6、formatsCDF - Common Data Format cdfread Cell array of CDF recordsFITS- Flexible Image Transport System fitsread Primary or extension table dataHDF - Hierarchical Data Format hdfread HDF or HDF-EOS data setMovie formatsAVI - Movie aviread MATLAB movie.Image formatsTIFF - TIFF image imread Truecolor,

7、grayscale or indexed image(s).PNG - PNG image imread Truecolor, grayscale or indexed image.HDF - HDF image imread Truecolor or indexed image(s).BMP - BMP image imread Truecolor or indexed image.JPEG - JPEG image imread Truecolor or grayscale image.GIF - GIF image imread Indexed image.PCX - PCX image

8、 imread Indexed image.XWD - XWD image imread Indexed image.CUR - Cursor image imread Indexed image.ICO - Icon image imread Indexed image.RAS - Sun raster image imread Truecolor or indexed.PBM - PBM image imread Grayscale image.PGM - PGM image imread Grayscale image.PPM - PPM image imread Truecolor i

9、mage.Audio formatsAU - NeXT/Sun sound auread Sound data and sample rate.SND - NeXT/Sun sound auread Sound data and sample rate.WAV - Microsoft Wave sound wavread Sound data and sample rate.3. 数据输入向导(Import wizard)File 菜单下的工具 Import Wizard 用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。在 Import 对话框中输入需要导入的数据文件名后出现 I

10、mport Wizard 窗口,可预观测将要导入的数据、显示图象、播放声音等。几种数据的导入:(1) mat 数据文件 ( mat data file)调入途径: File-Import data-选择文件名- 打开-Import Wizard -勾选需要调入的变量-finish .也可用 Browse 打开文件浏览器选择输入文件;Clipboard ,数据从剪贴板中调入。窗口内容:左侧,变量名称、大小、类型。右侧观察前 10 行 10 列信息。Next: 显示数据输入向导窗口第二页。(2)ASC码数据文件:(ASC code data file) File-Import data-选择文件名

11、或输入 ASC数据文件名-打开-Import Wizard-选择显示数据内容 (data)或头文本内容(textdata)-选择 Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)- 按 Finish 完成导入操作或按 Cancel 终止数据的导入。(3)图象数据文件:(Graphics data file) File-Import data-选择文件名或输入图形数据文件名-打开- Import Wizard -点击 show image(可在图象上拖曳放大区域) -按 Finish 完成数据导入(或按 Cancel 终止数据导入) 。(4)声音数据文件:(Sound data

12、 file) File-Import data-选择文件名或输入声音数据文件名-打开- Import Wizard -点击 Play Sound 弹出一个显示声音数据波形的图形窗口(按 Play agine 按钮重新播放声音,按 Done 按钮关闭预观察窗口)-按 Finish 完成数据导入(或按 Cancel 终止数据导入) 。(5)剪贴板的数据:(Clipboard data) 需要导入已存放在系统剪贴板中的数据,点数据输入向导窗口中的 Clipboard 选项,-Next 进入下一页-按 Finish 完成数据导入(或按 Cancel 终止数据导入) 。二 M 文件 (M-file)MA

13、TLAB 有两种工作方式:1,交互式命令操作方式(interactive mode)通过命令窗口进行交互式操作;2,M 文件(M-file) 的编程工作方式(programming mode)。1 M 文件编程:(M-file program)可用普通文本编辑器编制 MATLAB 文件,文件由纯 ASC字符组成,确定文件名后加 .m 扩展名,称为 M 文件。MATLAB 提供了一个方便的编辑/调试器,功能较多,推荐使用。建立 M 文件的一般步骤:(normal process of M- file creating)(1) 打开文件编辑器:(Opening the file editor) 最

14、简单的方法是在操作桌面的工具栏上选择新建文件键(New M- File)或打开已有文件键(Open File),也可以在命令窗口输入命令 edit 建立新文件或输入 edit filename, 打开名为 filename 的 M 文件;(2) 编写程序内容:(Compose the program content) 编写新的文件或修改已有文件;(3) 保存文件:(save file) 文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;(4) 运行文件:(running file) 在命令窗口输入文件名即可运行。如要在编辑器中直接完成运行,可在编辑器的 Debug 菜单下save an

15、d run 选项,或按 Run 快捷键,最快捷的方法是直接按F5 键执行运行。M 文件有两种形式:命令(脚本) 文件(Script File)和函数文件(Function File)2. 命令文件: (Script File) M 文件中最简单的一种,是可用于自动重复执行的一组 MATLAB 命令和函数组合,不需输出输入参数,用M 文件可以调用工作空间已有的变量或创建新的变量。运行过程中产生的变量都是全局变量。建立一个命令文件等价于从命令窗口中顺序输入文件里的命令,程序不需要预先定义,只要依次将命令编辑在命令文件中,再将程序保存成为扩展名为.m 的 M 文件即可。运行命令文件时,只需在命令窗口

16、键入文件名即可。例:用三角函数计算画出花瓣图形。theta=-pi:0.01:pi;rho(1,:) =2*sin(5*theta).2; %计算四种不同 rhorho(2,:)=cos(10*theta).3;rho(3,: )=sin(theta).2;rho(4,: )=5*cos(3.5*theta).3;for k = 1:4Subplot(2,2,k), polar(theta,rho(k,: )end将程序保存成名为 petals 的 M 文件,并运行。注:(1) %引导注释行,不予执行;(2) 不需要用“end”作为 M 文件的结束标志;(3) 若文件存放在自己的目录上,在运行

17、文件前,应先将自己的目录设置为当前工作目录。最简单方法:在当前目录浏览器中设置。(4) 运行后存放在工作空间的变量可以用工作空间浏览器查看。3、函数文件(Function File)如果 M 文件的第一个可执行行以 function 开始,便是函数文件,每一个函数文件定义一个函数。函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。例:建立 average 函数用于计算矢量中单元的平均值。function y = average(x)%AVERAGE Mean of vector elements.%A

18、VERAGE(X),Where X is a vector, is the mean of vector element.%Non-vector input results in an error.m,n=size(x);if(m=1) | (n=1) | (m=1将文件存盘,缺省状态下自动存储名为 average.m 的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB 函数一样使用。例:用已建立的 average 函数文件求 199 的平均值。z=1:99;average(z)函数文件的基本组成部分:(1)函数定义行:(the lines for function

19、identification) 由function 引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。可以设多个输入输出参数, 如:function x,y,z=sphere(theta,phi,rho)也可以没有输出参数,如:function printresults(x)(1) H1 行:(Lines H1) lookfor 查询时使用的;(2) 帮助文本:(Help text) 建立在线查询信息;(3) 函数体: (Function body) 包含全部的用于完成计算及给输出参数赋值等工作的语句;(4) 注释:(explanatory notes) 以%起始

20、导行尾结束部分的说明文字。可放置在程序中的任何部位。4、M 函数的类型: MATLAB 有 4 种类型 M 函数,匿名函数、主函数与子函数、私有函数和嵌套函数。1) 匿名函数:匿名函数不要求有 M 文件,它只包含一个MATLAB 表达式,任意多个输入和输出。可以在 MATLAB命令窗口、M 函数文件或者是脚本文件中定义它,其语法是:f=(arglist)expression其中 expression 为此匿名函数的函数体,arglist 为此函数的输入参数列表。等号右边必须以开始,符号用来构造函数句柄,函数句柄被创建后,此匿名函数就可以被调用。例: sqr=(x)x.2;调用格式为 a=sqr

21、(x)例如 a=sqr(5), 运行结果a =25可以将函数句柄 sqr 作为参数传递给别的函数,例如作辛普森正交数值积分: quad(sqr,0,1)就是将 sqr 作为参数传递给了函数 quad 进行计算.运行结果 ans = 0.3333匿名函数可携带多个输入参数,例如:sumAxBy=(x,y)(3*x+4*y);输入参数为 x,y 调用这个匿名函数输入 x,y 即可执行运算,例如:sumAxBy(5,7); 运行结果为 43.如果匿名函数中不包含任何输入参数,后面的参数列表必须用空的括号表示,如: t=( )datestr(now), 调用此匿名函数同样也要用括号,如:t( )ans

22、 =17-Apr-2010 19:19:17否则 MATLAB 只识别此句柄,而不会调用此函数,如:t运行结果 ( )datestr(now)2) 主函数与子函数MATLAB 允许一个 M 文件包含多个函数的代码,其中第一个出现的为主函数,其它函数为子函数。保存以主函数定义名为函数文件名。主函数可以在 M 文件外部调用,而子函数则不可以,子函数只在主函数和该 M 文件中的其它子函数中出现。子函数第一行是函数声明行,多个子函数的排列顺序可以任意改变,任何指令都可以通过“名字”进行调用,子函数的优先级仅次于内装函数。同一个 M 文件中的主函数和子函数的工作空间彼此独立,各函数间的信息可以通过输入输

23、出变量、全局变量或者跨空间指令进行传递。例:求均值和中值function avg,med=newstats(u) %主函数n=length(u) avg=mean(u,n); %newstats 使用内部函数求均值和中值med=median(u,n);function a=mean(v,n) %求均值子函数a=sum(v)/n %计算均值function m=median(v,n) %求中值子函数w=sort(v); %计算中值if rem(n,2)=1m=w(n+1)/2)elsem=(w(n/2)+w(n/2+1)/2end 将完整的函数文件存盘,缺省状态下自动存储名为 newstats.

24、m的函数,它就可以与其他 MATLAB 函数一样被调用,只要调用该函数,接受一个输入参数便可计算返回一个输出参数, 。利用 help 可以获取子函数的相关帮助信息,如在命令窗口输入 help newstats/mean,就可以得到主函数 newstats 中 mean子函数的信息。3) 私有函数私有函数是主 M 文件函数的一种,顾名思义就是一种不允许他人访问的函数。私有函数放在以 private 命名的子目录下,它只能在其父目录中可见。MATLAB 先查私有函数,再寻找标准 M 函数,因此,私有函数可以与其他目录下的函数有相同的名字。4) 嵌套函数嵌套函数是在一个 MATLAB 函数体内部定义

25、的函数。早期版本不允许定义嵌套函数。嵌套函数包含 M 文件的基本元素,但函数结束时必须用 end 表示。例:function x=nestfun(p1,p2)x1=nestfunIn(p2);function y=nestfunIn(p3)y=2*p3;endx=x1+p1;end 在一个 M 文件中可以使用多重嵌套,内容自学。5. 局部变量与全局变量 (Local variable and Global variable)由 M 文件定义的一个 matlab 函数内部所拥有的变量为局部变量,这些变量独立于其他函数的局部变量和工作空间中的变量。可以用来共享的变量为全局变量。用 global 就

26、可以把一个变量定义为全局变量。MATLAB 中变量名是区分大小写的,习惯上常将大写字母定为全局变量。如:global A B C全局变量的使用可以减少参数的传递,合理使用全局变量可提高程序的执行效率,但它会损伤函数的封装性,造成程序调试及维护的困难,因此,不提倡使用全局变量。三 程序结构(Structure of program )8 种控制程序流程(control flow statement) 的语句:for, while, if, switch, try, continue, break, return1。循环语句(Loop statement)(1) for 语句:for v=表达式

27、通常为一个矢量, 形式为:m:s:n(初值:步长:終值) 语句体end例: n=10for i=1:nx(i)=(i+1).2;endxx =4 9 16 25 36 49 64 81 100 121例:嵌套循环:注意与 end 的配对。m=3; n=4;for i=1:mfor j=1:na(i,j)=1/(i+j-1);endendformat rata =1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 例: 运用非 1 步长,产生 0-20 以内的偶数for i=0:2:20a(i/2+1)=i ;endaa =0 2 4 6 8 10 12

28、14 16 18 20(2) While 语句:为条件循环语句。循环不确定次数,只要表达式的逻辑判断结果非零,语句体就重复执行,直到循环条件不成立为止。While 表达式语句体end例:while 循环,求解 n!达到 100 位数的第一个 n 是多少。n=1;while prod(1:n)=0.90) elsefail=1;end(1) ifelseifend 语句if 表达式 1语句体 1;elseif 表达式 2语句体 2;else语句体 3;end例: 用色彩区分数据点的范围。n=100;x=1:n;y=randn(1,n);hold onfor i=1:nif y(i)=-1 %当

29、input_num=-1 时显示case 0disp(zero); %当 input_num= 0 时显示case 1disp(positive one); %当 input_num= 1 时显示otherwisedisp(other value); %当 input_num 等于其他值时显示end(4) 检测语句:(Detect statement)try-catch 语句用于检测错误并改变流程,形式:try语句体 1catch语句体 2 end先执行 try 下面的语句体 1,如没有错误,就跳出该结构,如出错误,则执行 catch 语句下面的语句体 2。可用 lasterr 函数查询错误信

30、息,查询结果为空字符串时表示语句体 1 成功执行。例: 判断错误语句的用法n=4; a=magic(3)trya_n=a(n,:), %取 a 的第 n 行元素catcha_n=a(end, : ), %如取 a 的第 n 行出错,则改取 a 的最后一行endlasterr %显示出错原因a =8 1 63 5 74 9 2a_n =4 9 2ans =Index exceeds matrix dimensions.(5)其他流程控制语句:(Other control flow statement)(a), continue 语句:用于控制 for 循环和 while 循环跳过某些执行语句。在

31、 for 循环和 while 循环中,如果出现 continue 语句,则跳过循环体中所有剩余的语句,继续下一次循环。例: continue 语句的用法.确定剔除空行和注释行后文件的有效行数fid=fopen(magic.m,r); %打开文件count=0; %计数器置零while feof(fid) %判断是否到文件末尾line=fgetl (fid); %从文件中读行if isempty(line) | strncmp(line,%,1)%判断是否为空行或注释行continue %如果是空行或注释行继续下一次循环endcount=count+1; %如果不是空行或注释行计数器加 1end

32、disp(sprintf(%d lines ,count); %显示剔除后的行数25 lines(b). break 语句:用于终止 for 循环和 while 循环的执行.如果遇到break 语句,则退出循环体,执行循环体外的下一行语句。例:break 语句的用法,调出函数 fft 的注示内容.fid=fopen(fft.m,r); %打开文件s= ; %清空字符数组while feof(fid) %判断是否为文件末尾line=fgetl(fid); %从文件中读行if isempty(line) %如果是空行break %如果是空行退出循环ends=strvcat(s,line); %如果

33、不是空行,将该行写入字符数组enddisp(s) %显示字符数组结果(c )return 语句: 用于终止当前的命令序列,并返回到调用的函数或键盘。将 return 插入被调用函数的某一位置,会根据某种条件迫使被调用函数提前结束并返回调用函数。例:return 语句的用法.满足某条件时退回到调用函数function d=det(A) %定义函数 det(A) 计算矩阵 A 的行列式if isempty(A) %如果矩阵是空的d=1;return %返回调用函数else %计算过程被忽略end四. 数据的输入与输出 (Date input and output)1数据的输入(Data input

34、)常用方法:(a) 键盘输入:(keyboard input) 数据少时较方便,数据多时不益使用;(b) 用 M 文件产生数据: (Generate data by M-file) 使用于较多数据的输入;(c) 从 ASC码文件装载数据:(Load data from ASC code file)(d) 对文本格式的数据文件可用 load 命令直接读入MATLAB,其内容存放在以文件名命名的变量中(e) 利用 fopen, fscanf, fread 及 MATLAB 其他低层 I/O 命令读取数据: 用于读取其他外部应用程序建立的各种特定格式的数据。2。数据的输出(data output)(

35、a) 利用 diary 命令输出语句: 运行 diary 命令可以在当前工作目录上产生一个名为 diary 的日记文件,文件内容可以输出。关闭日记文件的命令为 dairy off.(b) 利用 Notebook 获取数据:于 dairy 用法相仿优点是文字质量高,版面规范,且 M-book 中的命令可以随时运行或修改,MATLAB 工作空间中的数据随之改变。运行 Notebook 要求计算机上装有 MS-Word。NOTEBOOK Open an m-book in Microsoft Word (Windows only). NOTEBOOK, by itself, launches Mic

36、rosoft Word and creates a new m-book called “Document 1.“NOTEBOOK(FILENAME) launches Microsoft Word and opens the m-book FILENAME.NOTEBOOK(-SETUP) runs an interactive setup function for the Notebook. The user is prompted for the version of Microsoft Word and the locations of several files. NOTEBOOK(

37、-SETUP, WORDVER, WORDLOC, TEMPLATELOC) sets up the Notebook using the specified information. WORDVER is the version of Microsoft Word (one of 97 or 2000 or 2002), WORDLOC is the directory containing winword.exe, and TEMPLATELOC is a Microsoft Word template directory.Examples: notebooknotebook c:docu

38、mentsmymbook.docnotebook -setup For the case in which Microsoft Word 97 (winword.exe) resides in theC:Program FilesMicrosoft Office 97Office directory, and the Microsoft Word templates reside in the C:Program FilesMicrosoft Office 97Templates directory: wordver = 97; wordloc = C:Program FilesMicroso

39、ft Office 97Office; templateloc = C:Program FilesMicrosoft Office 97Templates; notebook(-setup, wordver, wordloc, templateloc)(c) save 命令输出数据:将当前内存中的变量存到文件中去。(d) 利用 fopen, fprintf, fwrite 及其他底层 I/O 命令输出特殊格式的数据:如需要在其他外部应用程序中使用 MATLAB 输出的特定格式的数据,使用此方法。3. Save 和 load 命令的使用(Using commend Load and Save)(

40、1) save(将工作空间的变量存入磁盘)命令的常用调用方法save: 将工作空间所有的变量以二进制格式存入名为 matlab.mat 的缺省文件; (a) save dfile: 将工作空间所有的变量以二进制格式存入 dfile.mat 文件,扩展名自动产生(b) save dfile x: 只把变量 x 以二进制格式存入 dfile.mat 文件,扩展名自动产生(c) save dfile.dat x-ascii: 将变量 x 以 8 位 ASC码形式存入dfile.mat 文件;(d) save dfile.dat x-ascii-double: 将变量 x 以 16 位 ASC码形式存

41、入 dfile.mat 文件;(e) save(fname, a, -ascii): fname 是一个预先定义好的包含文件名的字符串,该用法将变量 a 以 ASC码格式存入 fname 定义的文件中。(2) load 命令的常用方法(usual application of command load)(a) load: 把磁盘 matlab.mat 的内容读入内存;(b) load dfile: 将磁盘文件 dfile.mat 内容读入内存;(c) load dfile.dat: 将磁盘文件 dfile.mat 内容读入内存,这是一个ASC码文件,系统自动将文件名定义为变量名;(c) a=l

42、oad(fname): fname 是预先定义好的包含文件名的字符串,将由 fname 定义文件名的数据文件调入 a 中。附:1、命令窗口数据直接输入输出语句(Input)可利用语句中输入的字符串内容提示用户在命令窗口直接输入程序运行所需的某些参数,调用格式:R = INPUT(How many apples): 执行后出现提示字符串,输入的内容可以是 MATLAB 可估值的任何表达式.输出保存在变量 R 中。R = INPUT(What is your name,s):执行后出现提示字符串,等待字符串输入,字符串直接输出为MATLAB 字符串形式。INPUT Prompt for user

43、input. R = INPUT(How many apples) gives the user the prompt in the text string and then waits for input from the keyboard. The input can be any MATLAB expression, which is evaluated, using the variables in the current workspace, and the result returned in R. If the user presses the return key withou

44、t entering anything, INPUT returns an empty matrix.R = INPUT(What is your name,s) gives the prompt in the text string and waits for character string input. The typed input is not evaluated; the characters are simply returned as a MATLAB string.The text string for the prompt may contain one or more n

45、. The n means skip to the beginning of the next line. This allows the prompt string to span several lines. To output just a use .例:编制可由命令窗口输入被处理温度数据的程序。k=input(选择转换方式(1-摄氏转换为华氏,2-华氏转换为摄氏):);if k=1 if k=1tout=tin*9/5+32; % 摄氏转换为华氏k1=2;elseif k=2tout=(tin-32)*5/9; % 华氏转换为摄氏k1=1;endstr= C; F;disp(转换前的温

46、度, , 转换后的温度 )disp( ,num2str(tin),str(k,:), , num2str(tout),str(k1,:)不同的样条插值函数应用方法:yi=interp1(x,y,xi,method)yi=method(x,y,xi)例: 有一正弦衰减数据 y=sin(x).*exp(-x/10),其中 x=0:pi/5:4*pi,用三次样条法进行插值。未插值:x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10);plot(x0,y0)方法 1:x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10);x=0:pi/20:4*pi;y=spline(x0,y0,x);plot(x0,y0,or,x,y,b)方法 2:x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10);x=0:pi/20:4*pi;y=interp1(x0,y0,x,splin)plot(x0,y0,or,x,y,b)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报