查看: 132|回复: 11|关注: 0

[已答复] matlab矩阵操作--如何将矩阵内某一行的值改成特定的值?

[复制链接]

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-10-10 19:09:36 | 显示全部楼层 |阅读模式
matlab用的不多,矩阵操作不太习惯,对于矩阵内元素的操作还是习惯性的想到循环,如果不用循环,如何解决下面的问题呢?
假设有两个矩阵A[5x5],矩阵B[5x5]
现在想给矩阵A,B快速赋值成自己需要的值
比如矩阵A=[2,2,2,2,2; 3,3,3,3,3; 4,4,4,4,4; 5,5,5,5,5; 6,6,6,6,6],矩 阵B=[2,3,4,5,6; 2,3,4,5,6; 2,3,4,5,6; 2,3,4,5,6; 2,3,4,5,6]
如果在矩阵的行列很大的情况下,该怎么简便操作呢?谢谢。

还有一个问题,如果这两个矩阵内保存的是用于计算公式的输入值,比如:y=a*A(1,1)+b*B(1,1) 或者y=a*A(1,1)*B(1,1)
也就是取出矩阵A和B相同位置的值代入公式计算,保证一一对应,再把计算的值保存在矩阵C里
请问以上操作该如何利用matlab矩阵的快速运算得到呢?

先谢谢各位的帮助了。


入门

75 麦片

财富积分


50500


2

主题

146

帖子

13

最佳答案
  • 关注者: 6
发表于 2019-10-10 19:32:17 | 显示全部楼层
这里
A=zeros(5,5);
A(1,:)=2;...A(5,:)=6;
B=zeros(5,5);
B(:,1)=2;...B(:,5)=6;
第二个问题
y= A.*B;就是A和B中元素对应相乘得到的结果,也是5*5的矩阵。
如果我的回帖对你有帮助,请支持或选为最佳答案,谢谢!

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 19:38:54 | 显示全部楼层
Leedear 发表于 2019-10-10 19:32
这里
A=zeros(5,5);
A(1,=2;...A(5,=6;

谢谢回复,如果矩阵的行列数很大,比如有201 x 201,能快速赋值吗??

入门

75 麦片

财富积分


50500


2

主题

146

帖子

13

最佳答案
  • 关注者: 6
发表于 2019-10-10 19:43:36 | 显示全部楼层
Roii 发表于 2019-10-10 19:38
谢谢回复,如果矩阵的行列数很大,比如有201 x 201,能快速赋值吗??

请支持回帖。。。当然可以,无非就是用个for循环就好了。如:
for ii=1:201
A(ii,:) = ii+1;
end

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 19:54:42 | 显示全部楼层
Leedear 发表于 2019-10-10 19:43
请支持回帖。。。当然可以,无非就是用个for循环就好了。如:
for ii=1:201
A(ii, = ii+1;

谢谢回复,已支持。如果我想把两个矩阵对应的元素取出来,然后放进比较复杂的公式内计算,除了for循环外,还有什么方法吗?

入门

75 麦片

财富积分


50500


2

主题

146

帖子

13

最佳答案
  • 关注者: 6
发表于 2019-10-10 19:59:41 | 显示全部楼层
Roii 发表于 2019-10-10 19:54
谢谢回复,已支持。如果我想把两个矩阵对应的元素取出来,然后放进比较复杂的公式内计算,除了for循环外 ...

这要看你怎么个复杂法了。。。能稍微具体一点吗?

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 21:07:01 | 显示全部楼层
Leedear 发表于 2019-10-10 19:59
这要看你怎么个复杂法了。。。能稍微具体一点吗?

谢谢回复,比如x=2*tan(A(1,1))*tan(B(1,1))/tan(2*A(1,1)-B(1,1))。。类似这样的有乘除,A和B矩阵对应位置进行计算。

入门

75 麦片

财富积分


50500


2

主题

146

帖子

13

最佳答案
  • 关注者: 6
发表于 2019-10-10 21:09:38 | 显示全部楼层
Roii 发表于 2019-10-10 21:07
谢谢回复,比如x=2*tan(A(1,1))*tan(B(1,1))/tan(2*A(1,1)-B(1,1))。。类似这样的有乘除,A和B矩阵对应位 ...

你给的这一句中有什么复杂的地方呢?

MATLAB 基础讨论
版块优秀回答者

中级

902 麦片

财富积分


5001500


0

主题

1493

帖子

196

最佳答案
  • 关注者: 35
发表于 2019-10-10 21:19:48 | 显示全部楼层
Roii 发表于 2019-10-10 21:07
谢谢回复,比如x=2*tan(A(1,1))*tan(B(1,1))/tan(2*A(1,1)-B(1,1))。。类似这样的有乘除,A和B矩阵对应位 ...

这种问题不用for循环,就只能用arrayfun函数实现!

MATLAB 基础讨论
版块优秀回答者

中级

902 麦片

财富积分


5001500


0

主题

1493

帖子

196

最佳答案
  • 关注者: 35
发表于 2019-10-10 21:37:25 | 显示全部楼层
第一个问题这样就好了:
B(1:5,1:5)=repmat(2:6,5,1);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表