Matlab矩阵和架构

来源:互联网 发布:sql语句格式化工具 编辑:程序博客网 时间:2024/06/03 12:29

来源:《Matlab宝典》陈杰 电子工业出版社

1. 稀疏矩阵:

满矩阵存储:存储所有元素,占用空间较大。

稀疏矩阵:大部分矩阵元素为0;用一种占用空间较小的方法来存储;

假设mxn矩阵中,有nnz个非零元素,则存储在长度为nz max的矩阵中:

第一个矩阵用于存所有的非零元素(长度为nz max)

第二个矩阵用于存所有非零元素的行指标(长度为nzmax)

第三个矩阵用于存每一列开始处的指针,和一个标志着这三个矩阵结束的指针(矩阵长度为n+1)

下面是例子:

C =
     2     0     1     0
     0     2     0     1
     1     0     2     0
     0     1     0     2
>> B = sparse(C)
B =
   (1,1)        2
   (3,1)        1
   (2,2)        2
   (4,2)        1
   (1,3)        1
   (3,3)        2
   (2,4)        1
   (4,4)        2

命令:

 sparse(A)  %将A用稀疏矩阵方式来存储; full(A) %改为满矩阵方式存储;

nnz(A) %查看非零元素个数;

nonzeros(A) %返回非零元素数值;

nzmax(A) %返回存储非零元素的空间长度;

图形化:spy(A) %spy(S, 'LineSpec', markersize)  可以指定线型和标记的大小


2. 字符串数组:

1)创建:直接输入    a = 'char' 

>> a = 'char''2'''   %要在字符里添加'号,则''
a =
char'2'

2) 去除空格:deblank(A) %去掉尾部的空格;

strtrim(A) %去掉前后的空格

3)替代:strrep

>> s1= 'This is a good idea!';
>> str = strrep(s1, 'good', 'great')
str =
This is a great idea!

4)读取:strread

5)查找:strtok


3. 构架数组:类似C++中的结构体

1)1维创建:直接赋值

>> patient.name = 'John Doe';
>> patient.billing = 127.00;
>> patient
patient = 
       name: 'John Doe'
    billing: 127

2)2维创建:直接赋值 & 扩展维度

>> patient(2).name = 'Alice';
>> patient(2).billing = 123.00
patient = 
1x2 struct array with fields:
    name
    billing
>> patient(2)
ans = 
       name: 'Alice'
    billing: 123

使用时,直接赋值和引用:

>> my_patient = patient(1:2)
my_patient = 
1x2 struct array with fields:
    name
    billing
>> my_patient(1).name
ans =
John Doe

3)使用命令创建构架数组:struct

>> W = struct('city',{'Los', 'Chi','NY'}, 'temp', {34, 42, 37})  %''里面的是数值域, {}里面的是数值。注意数量得一样。
W = 
1x3 struct array with fields:
    city
    temp

4)获取域值:

>> names = fieldnames(W) 
names = 
    'city'
    'temp'