matlab行程之阵列和矩阵

在上一篇的统计方面我们定义了a=[1,2,3,4,5,6,7]就是一个阵列
定义一个阵列可以有多种方式,行与行之间可以使用";"或者回车来区分,而同一行的元素可以使用","来区分。因此上面定义的a就是一个1*7行列,有一行七个元素。
这里需要注意的是行列需要用[]来约束元素,只有处于[]之中的元素才可能称得得上行列。

行列的作用,从上篇的内容来说,行列现在能帮得上忙的地方就是可以集中计算一些数据:比如我们要计算y=x+1,而x的取值为1,2,3,4,5,6,7则我们可以这样来统一处理:
[code]>>x = [1,2,3,4,5,6,7];
>>y = x+1
y =
2 3 4 5 6 7 8[/code]

现在我们来想办法取出y中的某个元素:比如第2个元素,则可以使用y(index),也就是y(2)。注意啊这里不是y(1)!
如果要一次取出多个,则可以使用y(start:end),比如y(1:5)是取出1-5个元素[2,3,4,5,6]
如果要取出1,3,5位置上的元素的话则可以使用step来定义一个增量,这类似于程序中的for(int i =0; i < size; i++)中1(i++)的作用。
y(1:2:5)
[code]>> y(1:2:5)
ans =
2 4 6[/code]
当然也可以首先定义一个位置行列,比如m=[1,3,5],然后使用y(m)来取出位置为1,3,5位置上的元素,这种形式也是合法的,但比较死板。

》》 上面使用的建立阵列的方式对与计算机来说真的是无奈的事情,太小儿科了,如果我们要使用1-100的自然数来构成一个1*100的阵列的话,使用上面的形式就显现出了死板,所的 是matlab还有其他的建立阵列的方法:x=(1:1:100)注意哈,这里是()而不是[]!这样我们就建立了一个阵列,始于1而终于100,增量为1。
如果要在m-n之间使用均分的数据来生成一个阵列的话linspace(s,e,c)则是一个比较好的辅助方法,其中s为起始值,e为终止值,c为等分数量。比如我们要把1-50进行50等分就可以使用x = linspace(1,50,50),它的效果和x=(1:1:50)的效果类似,只是形式不同。

我们也可以把两个预先存在的阵列合并。比如x = [1,2,3]; y = [4];则z = [y x]
z = [4,1,2,3]。
同样的x = [1,2,3;4,5,6];y=[10;11];z=[y x]
z=[10 1 2 3
11 4 5 6]
但是这里需要注意的是x,y的行要相同哈,也就是说如果x是m*n的,则y必须是m*NN的

阵列的运算符号
[code]+ 加
- 减
.* 乘
./ 左除
.^ 次方

.' 转置[/code]

比如减法:
[code]>> x=1:5
x =
1 2 3 4 5
>> x-2
ans =
-1 0 1 2 3[/code]
乘法:
[code]>> 2*x-1
ans =
1 3 5 7 9[/code]
这里需要注意的是2*x而不是2.*x,这主要是因为2为常量,而.*主要使用在阵列和阵列之间的运算比如:
[code]>> x=1:5;y=1:5;z=x.*y
z =
1 4 9 16 25
[/code]
转置运算:
[code]>> x=1:5;x'
ans =
1
2
3
4
5[/code]

这个时候我们就具备了如何计算1*1+2*2+3*3+4*4+5*5的能力了啊
[code]>> x=1:5;x*x'
ans =
55[/code]

什么环境中都会有特殊的情况,就象人除了男女之外还有人妖。不过在数学中特殊情况是不区分褒贬的,在一定程度上特殊的情况看起来更有意思。这里列出一些特殊的矩阵!
[code] zeros函数是形成元素皆为0 的矩阵;
ones函数是形成元素皆为 1 的矩阵;
eye则是产生一个单位矩阵[/code]
使用方式如下:
A = zeros(2);
[code]>> x = zeros(2)
x =
0 0
0 0[/code]
[code]>> x = zeros(2,3)
x =
0 0 0
0 0 0[/code]

单位矩阵:
[code]>>x = eye(2)
ans =
0 1
1 0
>> y = eye(2,3)
y =
1 0 0
0 1 0[/code]

如果要得到矩阵的大小可以使用size(x)

到此为止就可以尝试计算一个复杂的算式了:
[code] x^3 - 2*x^2 + x - 6.3
f=------------------------
x^2 + 0.05*x - 3.14
>> x=2.0 % x 是一纯量
>> nume = x^3 - 2*x^2 + x - 6.3;
>> deno = x^2 + 0.05*x - 3.14;
>>f = nume/deno;

>>%阵列
>> x=1:5; % 注意 x 是一阵列
>> nume = x.^3 - 2*x.^2 + x - 6.3;
>> deno = x.^2 + 0.05*x - 3.14;
>> f = nume./deno[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值