MATLAB“内部矩阵维度必须一致”(及要注意数组的乘法运算是要带点)

 举出这一题为例子

 图中可见连接exp与sin函数之间的乘号*前面如果没有“.”则会报错内部矩阵维度必须一致

明显MATLAB把输入的式子当作矩阵处理了,而其实只要作为数组处理即可(矩阵在定义中看作数组的特殊形式),而数组的乘法是需要点乘

继续做完这道题

 

t=[0:0.1*pi:2*pi];
>>  z=0.707;
>> f=10*(1/sqrt(1-z^2))*exp(-2*t).*sin(4*t)

f =

  1 至 5 列

                   0   7.174315708291667   2.365470700067633  -1.261950448311017  -1.089317979230833

  6 至 10 列

  -0.000000000000000   0.310030292616613   0.102221257488071  -0.054533823526243  -0.047073698117739

  11 至 15 列

  -0.000000000000000   0.013397623724428   0.004417381065910  -0.002356620192474  -0.002034238942833

  16 至 20 列

  -0.000000000000000   0.000578963816556   0.000190892344322  -0.000101838792376  -0.000087907435405

  21 列

  -0.000000000000000

>> logi=logical(f>=0)

logi =

  1×21 logical 数组

   1   1   1   0   0   0   1   1   0   0   0   1   1   0   0   0   1   1   0   0   0

>> f1=logi.*f

f1 =

  1 至 6 列

                   0   7.174315708291667   2.365470700067633                   0                   0                   0

  7 至 12 列

   0.310030292616613   0.102221257488071                   0                   0                   0   0.013397623724428

  13 至 18 列

   0.004417381065910                   0                   0                   0   0.000578963816556   0.000190892344322

  19 至 21 列

                   0                   0                   0

这里比较有趣的一点在于条件输出部分,因为要输出大于零的部分,所以先定义了一个变量logical类型的变量logi储存函数大于等于零的元素,真为1,假为0,再与相乘消除小于零的部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值