最近想用Matlab进行数据分析,算法性能测试,平时由于用的是C、C++,因此很多习惯都一时改不了,这里自己列出来一些Matlab中明显不同的地方。
这里附上一个自己第一次编写的M文件:功能是从文本数据中读取格式数据
my.txt文本内容:
实现代码如下:
1 %
2 %write a program for reading files
3 %
4 fid=fopen('my.txt','r');
5 %
6 %set j=1 notice:matlab first index is 1 not 0.
7 %
8 i=1;
9 j=1;
10 flag=0;
11 while ~feof(fid)
12 s=fgets(fid);
13 temp='';
14 for k=1:length(s) %|| (s(k))==EOF
15 if (s(k)==32 | s(k)==10) % ''10 % '\n'
16 if flag==1 %last char is not ''
17 %fprintf(1,'temp=%s\n',temp);
18 A(i,j)=str2num(temp);
19 %fprintf(1,'A[%d][%d]=%f\n',i,j,A(i,j));
20 j=j+1;%add columns
21 temp='';
22 end
23 flag=0;
24 else
25 %connect the new char to temp
26 temp(length(temp)+1)=s(k);
27 flag=1;
28 end
29 end
30 %%
31 i=i+1;%add rows
32 j=1;%re set j=1 notice:matlab first index is 1 not 0.
33 end
34 if flag==1
35 [rows,columns]=size(A);
36 A(rows,columns)=str2num(temp);
37 %fprintf(1,'A[%d][%d]=%f\n',i-1,j,A(i-1,j));
38 flag=0;
39 temp='';
40 end
41 fclose(fid);
42 A
另外:str='\n' 那么str(1)=\ str(2)=n 而不是str(1)=\n换行符。故而在实际使用时候应用其ASCII码10代替。其他的字符这不需要。
str=',' ,replaced by str(1),类似的其他一般字符都可以这么操作。
M文件编写,函数调用
函数定义形式:function[输出变量列表]=函数名(输入变量列表)
函数体语;
注意事项:当输入变量多于一个时,应该用方括号,输入变量多于一个时应该用逗号隔开,编写完以后必须以函数名存盘,否则不能被调用,函数M文件不能访问工作区中
的变量。例如:one output variable two output variable
%filename:sci.m % filename:sc.m
function y=sci(x) function[y,z]=sc(x)
.............. .........
基本的绘图控制
在调用plot时可以指定颜色、线型和数据点图标,基本格式为:plot(x,y,'color-linestyle-marker')
当只指定数据点图标时,数据点将不连成线,而只画出一个个孤立的数据点。字符串参数的取值如下:
颜色:y(黄);r(红);g(绿);b(蓝);w(白);k(黑);m(紫);c(青)
线型:-(实线);:(点线);-.(虚点线);- -(虚线).
数据点图标:.;+;*;o(小圆圈);pentagram(五角星)等等,
这些标记符的大小、形状、填充等详细可查看:http://blog.csdn.net/benjmzhu/article/details/7246892
plot(t,sin(2*t),'-mo',...
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[.49 1 .63],...
'MarkerSize',12)
坐标系的控制:不特别指定时,matlab自动指定图形的横纵坐标比例和显示的范围,如果不满意,可用axis命令来控制,常用的有:
axis([xmin xmax ymin ymax]) []中分别给出x轴和y轴的最小、最大值
axis equal x轴和y轴的单位长度相同
axis square 图框呈方形
axis off 取消坐标轴
图形标注
xlabel,ylabel,zlabel,title
text和gtext用于在图形中特定的位置加字符串,前者字符串的位置在命令中指定,后者用鼠标指定;
grid在图形上加网格。
多幅图像:subplot(m,n,p)可在同一个图形窗口中,画出多福不同图像。
三维图形
空间曲线:plot3(x,y,z)
带网格的曲面:[X,Y]=meshgrid(x,y);mesh(X,Y,Z);surf(X,Y,Z)
高等线:二维三维高等线函数contour,contour3
打开另外一个图形窗口命令:figure(n)
Matlab编程网上资料收集:
MATLAB通用图形函数命令 matlab之基本绘图函数 http://wenku.baidu.com/view/f451ff84bceb19e8b8f6ba8f.html
matlab设置图中字体和线条大小等 http://wenku.baidu.com/view/9f865323aaea998fcc220e5e.html
待续。。。。。。