matlab中如何给已有矩阵插入一行或一列值

matlab中如何给已有矩阵插入一行或一列值,第1张

举例来说吧

假如你已有矩阵a如下:

a=[2

3

5

3

4

1

0

9

7]

这是一个3*3矩阵,那么当你想插入一行r=[1

2

3]时,那么可以这样做:

a=[ar]

这样a就变成了4*3的矩阵a如下:

a=[2

3

5

3

4

1

0

9

7

1

2

3]

假如你已有矩阵a为:

a=[2

3

5

3

4

1

0

9

7

1

2

3]

那么当你想插入一列

c=[1234]时,你可以这样做:

a=[a

c]

那么这是a就变成了

a=[2

3

5

1

3

4

1

2

0

9

7

3

1

2

3

4]

b=reshape(a,[],16)

这句转换这个数组为16列n行的矩阵

然后

b(:,17:20)=0

就是把后面的列变成0

a=reshape(b',1,[])

还原为数组

前提是n是16的倍数,如果不是,看最下面代码

————————

b=reshape(a,[],16)

b(:,17:20)=0

a=reshape(b',1,[])

———————

未经完全测试,有问题请指正。

还有一个办法

先求出总共要加多少次4个0

num =floor(n/16)

然后

提前制造一个全部是0的数组

b = zeros(1,n+num*4) %这里就是说b的大小应该等于n加上多少次加4个0

c=0

for i=0:16:n

b(i+c:i+16+c) = a(i:i+16)

c=c+4

end

________________________________

a= ones(1,36)

n=length(a)

num =floor(n/16)

b = zeros(1,n+num*4)

c=0

for i=0:16:n

if i <n-mod(n,16)

b(i+1+c:i+16+c) = a(i+1:i+16)

c=c+4

else

b(i+1+c:end) = a(i+1:end)

end

end

___________________________

有两种方法可以实现:

转置矩阵:

b

=

a'

通用方法:reshape()函数

示例如下:

说明:reshape(a,m,n)

表示将矩阵a变换为m行n列的矩阵,通常用于矩阵形状的改变,例如下面代码将原来的1行4列矩阵转换为2行2列矩阵:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11233451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存