回 帖 发 新 帖 刷新版面

主题:用下标数组访问数组的问题

integer*4 idx(n),ind(m),k,p,q

real*8  data(p,q),ipt(m),dp(p,q)


Do k=1,m

    dp(idx(ind),k) = 2*ipt*data(idx(ind),k);

enddo



有一段类似的程序.idx和ind都是下标数组,ind(ind)来确定最终的下标。但赋值时好像访问的位置不对。试着加方括号[]。比如

dp([idx(ind)],k) = 2*ipt*data([idx(ind)],k); 又会报维度不符之类的错误。


我的问题是,类似这样的用数组作为下标来访问和幅值另一个数组该如何操作? 在访问数组是[]的意义是什么?比如b=[1 2 3] ,A(b(1,3),:)和A([b(1,3)],:)有何区别? 要正确访问A的“第1,3行所有列”,哪个表达方式正确谢谢。

1

回复列表 (共2个回复)

沙发

A( [1,3] ,:)

A( b([1,3]) , : )

板凳

多谢。请问A( b([1,3]) , : )和A([b(1,3)],:)有何不同?不理解这个[]的用法

比如您说的

 b([1,3])相当于(1,3),最后A( b([1,3]) , : )还是相当于 A( (1,3) , : )。在MATLAB里这是取“A的第1,3行所有列”。

能不能解释一下【】的使用方法?。什么时候用?什么时候不用呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册