matlab题目请帮我解释下这个,没看懂.

问题描述:

matlab题目请帮我解释下这个,没看懂.

 

1个回答 分类:综合 2014-12-15

问题解答:

我来补答
matlab里矩阵里的某个元素可以通过两种方式索引:就是下标(告诉它第几行第几列),或索引号(就是从第一列第一个元素开始一列一列地从上往下数,第几个元素),举例:
>> a = rand( 3,2 )
a =
0.2785 0.9649
0.5469 0.1576
0.9575 0.9706
>> a( 1,2 )
ans =
0.9649
>> index = sub2ind( size( a ),1,2 )
index =
4
>> a( index )
ans =
0.9649
看明白了吗?用行列号取值和用索引号取值是一样的效果.
再问: 我主要不理解A(:,:,2)=A - 10是啥意思
再答: A原本是一个三行四列的二维数组,matlab里面的数组不像C里那样必须预先分配一个固定大小的内存,matlab数组是可以随时动态的改变维数的(其实它内部也经历了销毁旧数组内存,构造新的大小的内存,在将数据拷贝到新内存的过程,只是这几部不用你去操心),A(:,:,2)=A - 10就是给A增加了一层(一维),使它变成了三行四列二层的一个三维数组,其中第二层里的每个元素比第一层(第一层也就是原来的A)每个元素小10。例如: >> a a = 0.2785 0.9649 0.5469 0.1576 0.9575 0.9706 >> a( :, :, 2 ) = a - 0.5 a(:,:,1) = 0.2785 0.9649 0.5469 0.1576 0.9575 0.9706 a(:,:,2) = -0.2215 0.4649 0.0469 -0.3424 0.4575 0.4706 这里我多说一句,动态去改变数组(矩阵)的维数固然方便,但这样使用其实对程序性能来说是会降低的,最好是在使用矩阵前就预分配合适的内存而不是动态的去修改。
 
 
展开全文阅读
剩余:2000