MATLAB-对矩阵进行赋值时的维度问题

今天看代码时,遇到了一个令我有点惊讶的一个赋值问题。

虽然是一个很小很小的问题,很多人可能都不会纠结一看就懂,但对于我来说还是攻克了一个难关涨了点姿势呀

下面附上我追根究底的简单代码:

clc;
a=[1 2 3 4 5,6,7,8 9 10 11 12];
%a(1,10:13)=2:5;  %没错  难道可以这样赋值??惊讶  此时a_len = 13
%a(10:13)=2:5;     %也不错 与a(1,10:13)=2:5; 等价
%a(10:13)             %若不赋值,只是通过下标访问数组  则会出现错误:索引超出矩阵维度。
%%%%上边所示都是一维数组

b=[1 2 3;4 5 6;7 8 9];
%b(8:10)=1:3;       %出错 :试图沿模糊的维增大数组。
%a(3:5)=b(1,:);     %正确 这种赋值 左右两边元素数目必须相同,若a(3:6)=b(1,:);将会出错
%a(3:5)=b(1,2:4); %出错:索引超出矩阵维度。

%b(1,3:4)=10:11;  %居然对了,此时b=[1     2    10    11 ;4     5     6     0 ;7     8     9     0]
%b(1,1:4)=11;       %也对,此时4个数全被附为11;此时b=[11     11    11    11 ;4     5     6     0 ;7     8     9     0]
%b(1,1:4)=11:12;  %这样会错误:带有下标的赋值维度不匹配。
%b(1,1:4)              %与一维数组同理,若只是查看不赋值,则会出现错误:索引超出矩阵维度。

a1 = [a 0 1];          %应该是与这种同理:相当于自动增加数组长度

总结:

  • 对数组进行赋值时:
  1. 若等号右边直接是相同数目的数字或只有一个数字,即使等号左边矩阵下标超过矩阵维度也没关系,不会出错,将会自动增加数组长度;
  2. 若等号右边是其他矩阵,则必须左右两边元素数目必须相同并且矩阵下标不得超过矩阵维度才可以正确。
  • 若只是访问矩阵元素,矩阵下标绝对不能超出矩阵维度,否则将会出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值