【转】留着学习有用-Mm数据类型

Mm数据类型

visualsan@yahoo.cn

在matcom中,矩阵被封装起来,便于开发人员使用。Matcom里所以的数据类型为Mm.就Mm数据类型的使用作一些总结概括。

Mm x,y;直接生成Mm对象实例,为空的。使用时必须赋值。

Mm x,y=zreos(3,3);生成3x3大小的矩阵。赋初值为零。类似的函数有:eyes(n),eye(n,m)对角线为1其余为0的矩阵。rand(n),rand(n,m),生成随机值矩阵,前者为方阵,后者为nxm的行列式。magic(n),魔方矩阵。

对于矩阵可进行加减乘车的运算。但是只有满足一定的规则,矩阵运算才有意义,不如加减运算时两个矩阵的行列数必须相同。

Mm x,y;

x=rand(10);

y=rand(10);

display(x+y)

display(x-y)

对Mm类型数据的访问通常是通过访问单个元素实现的。Mm x=rand(3,3);访问x的元素方法为:

x.r(n,m),n和m为行和列数。double y=x.r(1,1) ,y的数值为x的第1行和第一列的数值。

对单个元素的数值操作,如改变数值方法为:x.r(1,1)=10;把x的第1行和第一列的数值赋为10.

访问Mm元素时,需注意它的下表是从1开始的。;另一种对Mm的访问是x.r(k).k为1到n*m .MATCOM数据是按列存储的,所以x.r(k)是从第一列开始访问,依次递增。比如:

Mm x= zeros (3,3);

x.r(1,1)=1;

x.r(1,2)=2;

x.r(1,3)=3;

//x=[1,2,3;0,0,0;0,0,0]

结果:

x.r(1)=1;

x.r(2)=0;

x.r(3)=0;

x.r(4)=2;

x.r(5)=0;

x.r(6)=0;

x.r(7)=3;

x.r(8)=0;

x.r(9)=0;

Mm数据类型的初始化方法除了赋值之外还可通过宏M_VECTOR实现。

double data[6]={1,2,3,4,5,6};

Mm x;

x= M_VECTOR(x,data);//用double向量直接初始化,x为1*6的矩阵

//向量赋值后,用reshape改变行列数

x.reshape(2,3);//x为2*3大小的矩形。

display(x);

要知道Mm的行和列的数目,可调用函数:

     int n,m,s;

        n=x.rows();//获得行数

   m=x.cols();//获得列数

s=x.size();//获得矩阵大小,s=n*m;

Mm数据的一个重要作用是为句柄。举例如下:

1.       画一条正弦曲线,要求输入曲线颜色,图像标题,X轴和Y轴标题。

    Mm h=plot(CL(sin(linspace(1,2*pi,100))));//曲线句柄h,对曲线的操作时,调用set函数//对句柄h进行操作,获得属性时用get(h,….).

       int r,g,b;

       char xl[50],yl[50],tl[50];

       cout<<"输入颜色成分r,g,b:";

       cin>>r>>g>>b;

       Mm color=zeros(1,3);

       color.r(1)=(double)r/255.0;

       color.r(2)=(double)g/255.0;

       color.r(3)=(double)b/255.0;

       cout<<"输入x轴标题:";

       cin>>xl;

       cout<<"输入y轴标题:";

       cin>>yl;

       cout<<"输入图形标题::";

       cin>>tl;

       set(h,(CL(TM("color")),color));

       title(CL(TM(tl)));

       xlabel(CL(TM(xl)));

       ylabel(CL(TM(yl)));

2.       在上述曲线基础上要把正弦曲线改为余弦曲线:

       y=cos(linspace(1,2*pi,100));

       set(h,TM("Ydata"),y);//直接改变y轴数据

类似改变x和z轴数据方法为:set(h,TM("Xdata"),y); set(h,TM("Zdata"),y);需注意,改变前后数据个数需保持不变。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值