首页 > 编程知识 正文

matlab 点运算,matlab求各点函数值

时间:2023-05-04 22:53:34 阅读:225570 作者:2463

例如 

 .* 点乘

.^ 点乘幂

. 点左除

./ 点右除

解释:点运算是对相同维数的矩阵的对应元素进行相应的运算


矩阵的点积,就是加点的情况

就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小


矩阵的乘法,就是不加点的情况
就是矩阵a的第一行乘以矩阵b的第一列,各个元素对应相乘然后求和作为第一元素的值。
矩阵只有当左边矩阵的列数等于右边矩阵的行数时,它们才可以相乘,乘积矩阵的行数等于左边矩阵的行数,乘积矩阵的列数等于右边矩阵的列数 


***************************************************************************************************************************************************************************


在MATLAB里最核心的内容就是数组和数组运算,在MATLAB里矩阵和数组的差别不大,矩阵作为一种变换或映射算子的体现,在数学上有着严格的运算规则。数组不仅承担matlab软件赋给它的一些运算规则,而且也实现矩阵运算的功能。
1 。 sxdl需要进行一般的(就像教科书讲的)矩阵(向量)运算时就直接用 *(^)。
2 。 sxdl需要把两(矩阵)向量 的对应位置相乘(求幂) 那就用 .*(.^)。

 

A*B(为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数)
A.*B(符号数组的乘法,为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量)

例1
A=[1 2 3;4 5 6;7 8 9];B=A;A*B
ans =
    30    36    42   

    66    81    96  

  102   126   150


>> B/A

ans = 

1     0     0   

 0     1     0   

  0     0     1      %矩阵这样做是不行的!!!


>> A.*B
ans =
     1     4     9   

  16    25    36  

  49    64    81


>> B./A
ans =
     1     1     1    

     1     1     1   

    1     1     1



例2

>> a=[1 2 3];b=[4 5 6];c=[7 8 9];

>> a*b

??? Error using ==> mtimesInner matrix dimensions must agree.%这个是不行的!!

因为矩阵a 的行数和矩阵 b的列数并不相同,所以不能用 a*b


>> a.*b
ans =
     4    10    18  (对应位置元素相乘)

>> a.*c
ans =
     7    16    27



>> a/b
ans =
      0.41558    (这个涉及到多项式求解了。。。)

>> a/c
ans =
      0.25773
%实际上是一个拟合的结果:a=kb,a=kc,k的一个拟合值。

>> a./b
ans =
         0.25          0.4          0.5
>> a./c
ans =
      0.14286         0.25      0.33333

所以,点乘或者点除都是一对一的乘或者除!!

Attention
特别注意:对于Ax=b的问题,如果A,b已知,那么,x=Ab(x等于A左除b)

 


>> A=[1 2;3 4;5 6];B=[3; 7; 11];>> x=AB
x =
            1            1
>> A*x
ans =
            3            7           11



********************************************************************************************************************

必须牢记一点:matlab的输入变量是矩阵,参与运算的矩阵维数必须对应!


2010-07-09 15:29 | 回复

我想提个问题: 
x=0.0:0.1:2*pi;
y=0.0:0.1:2*pi;
z=x*cos(y)*sin(x)+y*y*sin(y)*cos(x);
运行到这一步出错了!为什么啊?出错提示是:“??? Error using ==> mtimes
Inner matrix dimensions must agree.”
请高手指教!!

2011-03-22 21:03 | 回复

回复xiaozhang8712:
 应该是z=x.*cos(y).*sin(x)+y.*y.*sin(y).*cos(x)就OK了~

因为系统会认为x、y都是矩阵(实际是向量),矩阵相乘时,必须满足后一个矩阵的列数和前一个矩阵的行数相等,显然这里并不是这种情况~~~

这里只想得到对应位置的数相乘,并不是矩阵相乘,而是用点乘


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。