使用矢量化填充矩阵

6次观看(过去30天)
海达尔Dyab
海达尔Dyab 在2020年9月3日
评论: 海达尔Dyab在2020年9月3日
您好,我正在尝试填充矩阵的特定指数,我正在使用一个for循环来执行此操作,这是一个小示例代码段:
r = 2;
为了s = 2:119
nnum(r,s)=(r-1)* 120 + s;
m(nnum(r,s),nnum(r,s)-1)= -1;
m(nnum(r,s),nnum(r,s)+1)= -2;
m(nnum(r,s),nnum(r,s)-120)= -3;
m(nnum(r,s),nnum(r,s)+120)= -4;
m(nnum(r,s),nnum(r,s))= 5;
结尾
现在我有一个大程序,与上面的那样有很多操作,我想通过使用矢量化来填充我的矩阵来减少计算时间。这是我尝试的代码:
r = 2;
S = 2:119;
k =(r-1)* 120 + s;
f(k,k-1)= -1;
f(k,k + 1)= -2;
f(k,k-120)= -3;
f(k,k + 120)= -4;
F (k, k) = 5;
现在我以为f和m将是平等的,但他们不是。事项是,我只想要第一矩阵索引中的向量的第一元素与第二矩阵指数中的矢量的第一元素耦合,依此类推。这里发生的事情是传染媒介的每个元素都与来自其他向量的所有元素耦合到形成索引。关于我如何在不使用for循环的情况下实现第一代码片段的任何想法?
2评论
海达尔Dyab
海达尔Dyab 在2020年9月3日
是的,我知道这个问题,但是找不到解决的方法,谢谢!

登录评论。

接受答案

rik.
rik. 在2020年9月3日
问题是:
A([1 2],[1 3])
返回4个位置,而不是两个。如果您想要两个,则需要将次级区转换为Linear Indices:
IND =子2(大小(a),[1 2],[1 3]);
(印第安纳州)
1条评论
海达尔Dyab
海达尔Dyab 在2020年9月3日
是的,使用线性索引工作。谢谢!!

登录评论。

更多答案(0)

标签

s manbetx 845


释放

R2018B.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!