matlab编程(与c语言比较)

我的一门课必须使用matlab脚本编程,可是网上教程大多数是如何进行数学的运算。于是我记录一二。

1.数组

1.1数组定义

a=[];%定义了一个a的数组

1.2数组大小

m=size(a);%得到a的行列数,m是1*2的矩阵,
这个要注意,要是希望得到一个数一定要用下面两个
m=size(a,1);%得到a的行数
m=size(a,2);%得到a的列数

1.3 引用

引用数组(矩阵)的元素

A(a,b:c)%第a行第b到c个元素
A(a,b)%第a行第b列的元素
A(a,:)%第a行所有元素

就算是一个一维数组,引用时最好用a(1,i),而非a(i)
数组是小括号,不是中括号

注意数组下标从1开始

2.循环

2.1 while循环

while (条件)
执行语句
end

2.2 for循环

for i=a: b: c
执行语句
end
%a,b,c分别为起始量,步长,结束量

3.输入输出

3.1 输入

1.p=xlsread('filename');%读入纯数字的矩阵,读进来放在p中,继续进一步处理
2.p=csvread('filename');%功能如上

3.2 输出

1.fprintf(....)%标准输出,和c的完全一样,很好用,注意是单引号'',其他和c一样
2.disp()%输出括号里的东西,最好是一个数或者矩阵
3.不加分号会输出结果

4. 判断

if 判断语句
执行语句1
end
if 判断语句1
else
判断语句2
end
a==b%a和b相等
a~=b%a和b不等
a>=b
a<=b

6.函数

6.1 自定义函数

function[output1,output2,...]=function_name(input1,input2,...)
...
end

超过一个返回值需要用一个数组来接收

6.2 自带函数

1.isnan(A(a,b))%判断A(a,b)是不是数字
2.mean(A(a,:))%第a行求平均值
3.偏度峰度等统计学函数这里从略
4.plot(x,y)%以x为x轴画y的函数,y的每一行作为一个新的函数
5.hold on %与plot配合,hold on 以后再plot就会画在同一个图中

7.指针

暂时没有遇到,且不管

8.实例

其实本来我用matlab写了一个DTW算法,但是由于是作业,不方便放出来,我就写一个快排,可以大致了解一下。
注意这里数组a是全局变量,修改之前要先声明。
或者可以选择改一次传回来一次,那就有点烦了。

function [p] = findp(left,right,a)%找到p
global a;
i=left;
j=right-1;
while(i<j)
    while(a(i)<=a(right)&&i<j) i=i+1; end
    while(a(j)>=a(right)&&i<j) j=j-1; end
    t=a(i);a(i)=a(j);a(j)=t;%交换
end
if(a(i)>a(right)) t=a(i);a(i)=a(right);a(right)=t; end
p=i;
end

function [a] = qsort(i,j,a)
global a;
if(i<j)
    p=findp(i,j,a);
    qsort(i,p,a);
    qsort(p+1,j,a);
end
end
a=[1,2,9,5,6,8,7];
global a;
qsort(1,size(a,2),a);
disp(a);

绘图

clf
a1=0:1:0.1
x=-1:0.1:1
y=x;
[x,y]=meshgrid(x,y);
z1=sqrt(1-x.^2-y.^2);
z2=-z1;
surf(x,y,real(z1));
hold on %画下一个
surf(x,y,real(z2));
axis equal

总结

总之matlab和c还是差不多的,和py可能更接近。了解了上面这些,处理一些简单的数字应该没问题。matlab比c方便的地方是矩阵,短处就是递归迭代计算时间太长。如果主要是数据的迭代,建议还是用c吧。

猜你喜欢

转载自blog.csdn.net/HGGshiwo/article/details/105464531