百年孤独 发表于 2016-3-30 15:54

数学建模十类经典算法(6)

11、如果A(r,c)出现在等号的左边,并且用(r,c)声明的一个或者多个元素并不存在,就根据需要将A扩展,并将扩展位置上的元素置为0,这样就使得A(r,c)均指向已知元素,但是,如果数组A出现在等号右边,那么A(r,c)所指向的所有元素都必须存在,否则就返回一个出错信息。
简而言之,A(r,c)出现在等号左边时,若该值存在,则输出,若该值不存在,则赋值为0;
A(r,c)出现在等号右边时,若该值存在,则赋值,若该值不存在,则报错;
12、D(4:end,5:end)=[]会报错,因为这个区域不是拐角形状,而是这个矩阵的右下角;
可以用D(4:end,5:end)=1很明显的看出来:
D =

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 4 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
而如果想要只保留矩阵的左上角的部分,正确的删除命令如下:
D(4:end,:)=[],D(:,5:end)=[]
我们可以用D(4:end,:)=1,D(:,5:end)=1将删去的部分显而易见的标示出来:
D =

1 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 2 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 3 0 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
13、插入行或列,要注意反向依次调用数据的时候,步长为-1
a=
B=diag(a)
B(:,7)=[]
B(:,end+1:-1:7)=B(:,end:-1:6)
B(:,7)=0,B(7,7)=7

页: [1]
查看完整版本: 数学建模十类经典算法(6)