矩阵下标开始

  • 在大多数编程语言中(比如C语言),矩阵的下标是从零开始的

因为在定义矩阵之后,内存会随机分配一个首地址给矩阵,并依据其大小分配连续的字节,对a[0]之后的存储地址直接计算偏移量即可,如N*偏移量;如果从a[1]开始,则需要增加一步减法,如(N-1)*偏移量,在矩阵维度更大时,更易体现C语言的高效率与便捷。


  • MATLAB语言中,矩阵下标是从1开始的

听过MATLAB创始人Cleve Moler的一个小讲座,他自己的说法是,"because of matrices"。因为MATLAB一开始就是为了矩阵计算创造出来的,所以index从1开始只是符合矩阵的常规……(源于知乎某答)。

 

 

 

 

### MATLAB 矩阵下标使用方法 在 MATLAB 中,矩阵下标用于访问或修改矩阵中的特定元素。以下是详细的说明以及示例: #### 单下标引用 MATLAB矩阵虽然以二维形式展示,但在内存中是以一维列优先的方式存储的。因此可以通过单下标来访问矩阵中的任何元素。例如,给定一个 3×3 矩阵 `A`,可以使用单下标访问其第 i 行 j 列的元素。 ```matlab A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; element = A(5); % 访问第 5 个元素 (对应于第 2 行第 2 列) ``` 这里 `(5)` 是基于列优先的一维编号[^3]。 #### 双下标引用 双下标是最常见的引用方式之一,通过指定行和列的位置来访问矩阵中的某个具体元素。 ```matlab A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; element = A(2, 3); % 访问第 2 行第 3 列的元素 ``` 此代码片段返回的是矩阵 `A` 的第 2 行第 3 列上的值 `6`[^4]。 #### 下标转换 有时需要将在双下标表示下的位置转化为单下标或者反之亦然。函数 `sub2ind` 和 `ind2sub` 提供了这种能力。 ```matlab sizeA = size(A); linearIndex = sub2ind(sizeA, 2, 3); % 将双下标 (2,3) 转化为单下标 [row, col] = ind2sub(sizeA, linearIndex); % 将单下标转回双下标 ``` 以上代码展示了如何利用 `sub2ind` 函数将双下标 `(2,3)` 转换成对应的线性索引,并用 `ind2sub` 还原回来[^4]。 #### 使用冒号操作符 冒号操作符是一种非常强大的工具,可用于选择整个行、列或是子矩阵。 - **整行/整列** ```matlab rowVector = A(2, :); % 获取第 2 行的所有元素 columnVector = A(:, 3); % 获取第 3 列的所有元素 ``` - **子矩阵** ```matlab subMatrix = A(1:2, 2:3); % 获取由前两行和最后两列组成的子矩阵 ``` 这些例子均体现了冒号操作符的强大灵活性[^4]。 #### 修改矩阵元素 除了读取外,还可以通过相同的语法设置新值至目标位置。 ```matlab A(2, 3) = 10; % 设置第 2 行第 3 列的值为 10 A(:) = 1:prod(size(A)); % 将所有元素重置为序列化的向量 ``` 这允许动态调整矩阵的内容。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值