Fortran Coder

查看: 12058|回复: 6
打印 上一主题 下一主题

[数值问题] 如何高效的将一维数组重复赋值给二维数组?

[复制链接]

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

楼主
发表于 2020-9-10 21:24:53 | 显示全部楼层
li913 发表于 2020-9-10 10:59
do concurrent (i=1:n)
su(:,i) = u
end do

如果一定强调“每一行”的话,最后可以加
su = transpose(su)

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

沙发
发表于 2020-9-11 21:05:31 | 显示全部楼层
mmSCI 发表于 2020-9-11 11:09
如果不加会影响效率还是报错呢?

不影响也不报错。只不过是每一列sU含N个U元素。

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

板凳
发表于 2020-9-12 11:29:24 | 显示全部楼层
mmSCI 发表于 2020-9-12 10:34
懂了,这应该和初始赋值规则有关吧,如果是sU(:,i)=U就是sU是由U一列一列||构成的,如果是sU(i,:)=U就是s ...

对的。不过如果N值很大的话,用sU(i,:)=U 不是很高效,因为Fortran数组在内存中是按列存放的。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-12 01:43

Powered by Tencent X3.4

© 2013-2024 Tencent

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