最近用matlab, 发现matlab偏爱列,查了一下资料,发现matlab和Fortran一样,都是列优先的. 与之相反的是C++, 是行优先的. 下面写个小程序来看看matlab是如何偏爱列的:
clear
a = ones(3, 5)
sum(a) % 每一列的元素相加
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans =
3 3 3 3 3
最近用matlab, 发现matlab偏爱列,查了一下资料,发现matlab和Fortran一样,都是列优先的. 与之相反的是C++, 是行优先的. 下面写个小程序来看看matlab是如何偏爱列的:clearclca = ones(3, 5)sum(a) % 每一列的元素相加 结果为:a = 1 1 1 1 1
本文主要探讨的是“
行
优先
”原则和“
列
优先
”原则的问题。
1. 背景
首先了解“
行
优先
”和“
列
优先
”的知识,这两种方式在数学上的直观描述如下,给定如下
矩阵
:
根据
行
优先
的原则,其排序方式为
根据
列
优先
的原则,其排序方式为
2. 计算机领域的应用
行
列
优先
原则在计算机领域的应用主要如下。
行
优先
或者
列
优先
没有好坏,但其直接涉及到对内存
中
数据的最佳存储访问方式。因为在内存使用上,程序访问的内存地址之间连续性越好,程序的访问效率就越高;相应地,程序访问的内存地址之间连续性越差。所以,我们应该尽量在
行
优先
机制的编译器,比如C/C++,CUDA等等上,采用
我已经看到很多关于如何在 Windows
中
以非“正常”进程
优先
级运
行
MATLAB
的问题。
在单处理器机器上进
行
长时间计算时,最好降低
MATLAB
进程的
优先
级,以便您可以完成其他工作。 此外,最好将
优先
级
设置
为“实时”以进
行
基准测试。 随附的文本文件提供了在 Windows
中
进
行
设置
的非常简单的说明。
这只是文本,但您需要下载附件才能获取说明,原因有两个:
(1) 使说明更容易根据需要进
行
剪切和粘贴。 (2) 以便 Mathworks 可以跟踪对此主题感兴趣的人数。
(我已经在 Windows XP 上测试过,但它应该也适用于 Windows NT 和 Windows 2000。)
故名思意,当我们表示一个
矩阵
的时候把
行
放在前面就是
行
优先
,把
列
放在前面就是
列
优先
。
比如 一个
矩阵
[m][n] , 表示为 m
行
n
列
矩阵
,表示为
行
优先
,当表示为 m
列
n
行
的时候就是表示
列
优先
。
一个三维空间
中
的向量p分别沿着x方向y方向z方向上分别平移为a,b,c距离,用
行
优先
的平移
矩阵
表示为
,用一个
列
优先
的平移
矩阵
表示为,两个
矩阵
的关系也不难看出其实是互为转...
在
Matlab
中
,可以任意组合使用算术运算符、关系运算符和逻辑运算符等形成的表达式进
行
运算,
Matlab
进
行
运算处理的顺序取决于每个运算符的
优先
级;
Matlab
中
运算符的
优先
级是指,当多种运算符组合使用时,
优先
运算的顺序,运算符
优先
级越高,将
优先
运算;
如果多个运算符具有相同的
优先
级(例如加法和减法),那么按照表达式从左到右进
行
运算处理;
我们知道,两个完全相同大小的数组可以运算;若运算数其
中
之一是标量的两个大小不同的数组可以运算;若一个是
行
向量,一个是
列
向量,可以运算;若一个是
矩阵
,一个是具有相同
行
数
在
Matlab
中
,可以使用函数 `size` 来检测
矩阵
的
列
数。
例如,对于
矩阵
`A`,可以使用 `[m, n] = size(A)` 来检测它的
行
数 `m` 和
列
数 `n`。如果你只需要检测
矩阵
的
列
数,那么可以使用 `n = size(A, 2)` 来获得
列
数。
你也可以直接使用 `n = size(A, 2)` 来检测
矩阵
的
列
数,而不需要使用分号来忽略
行
数。
A = [1 2 3; 4 5 6; 7 8 9];
n = size(A, 2);
disp(n);
输出结果为: