Fortran Coder

查看: 115|回复: 11

[求助] 数组赋值问题

[复制链接]

6

帖子

2

主题

0

精华

入门

F 币
29 元
贡献
17 点
发表于 2020-8-27 11:42:46 | 显示全部楼层 |阅读模式
本帖最后由 不学无墅! 于 2020-8-28 09:11 编辑

有一个三维数组A(20,27,700),还有一个三维数组B(20,27,100),想要实现,在循环中,先将A(20,27,700)的第一层赋给B(20,27,100)的每一层,再将A(20,27,700)的第二层赋给B(20,27,100)的每一层,依次类推,直到将A(20,27,700)的第700层赋给B(20,27,100)的每一层
[Fortran] 纯文本查看 复制代码
Do i = 1,700
      Do j = 1,100
            B(:,:,j) = A(:,:,i)
      end Do
end Do


以上是我的代码,报错error #6366: The shapes of the array expressions do not conform.

求各位前辈指教帮助!
回复

使用道具 举报

25

帖子

0

主题

0

精华

熟手

F 币
231 元
贡献
101 点

规矩勋章新人勋章元老勋章

QQ
发表于 2020-8-27 14:17:28 | 显示全部楼层
听得很模糊,你是希望 B = A(:,:,:100) 吧?
彼岸,有永恒的守候...

565

帖子

1

主题

0

精华

大宗师

F 币
2793 元
贡献
1774 点
发表于 2020-8-27 15:41:09 | 显示全部楼层
确认一下a的形状。
QQ截图20200827154016.png

136

帖子

2

主题

0

精华

大师

F 币
892 元
贡献
465 点

规矩勋章

发表于 2020-8-27 17:00:22 | 显示全部楼层
Do i = 1,7
    B = A(:,:,(i-1)*100+1:i*100)
end Do
我猜你可能要的是这个意思

1543

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1458 元
贡献
958 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2020-8-27 20:42:44 | 显示全部楼层
necrohan 发表于 2020-8-27 17:00
Do i = 1,7
    B = A(:,:,(i-1)*100+1:i*100)
end Do

那用指针方便、高效得多。

57

帖子

2

主题

0

精华

专家

F 币
391 元
贡献
170 点

规矩勋章

发表于 2020-8-27 21:37:42 | 显示全部楼层
数组间赋值要求数组是必须conformed.
1 Do i = 1,700
2           Do j = 1,100
3                    B(:,:,j) = A(:,:,i)
4              end Do
5 end Do
要求B的第一维与A的第一维相同(20对20),B的第二维与A的第二维相同(27对70)。所显错误就是因为A和B的第二 维不相同导致。

6

帖子

2

主题

0

精华

入门

F 币
29 元
贡献
17 点
 楼主| 发表于 2020-8-28 09:13:11 | 显示全部楼层
原问题 对A的第二维描述错误了  前两维都是相同的 均为 20x27   

6

帖子

2

主题

0

精华

入门

F 币
29 元
贡献
17 点
 楼主| 发表于 2020-8-28 09:18:09 | 显示全部楼层
青衣巷 发表于 2020-8-27 14:17
听得很模糊,你是希望 B = A(:,:,:100) 吧?

我是希望A里的每一层依次赋给 B的每100层,具体来说就是先将B(:,:,1:100)全部等于A(:,:,1)
再将B(:,:,1:100)=A(:,:,2)
...........
最后B(;,;,1:100)=A(:,:,100)

6

帖子

2

主题

0

精华

入门

F 币
29 元
贡献
17 点
 楼主| 发表于 2020-8-28 09:19:17 | 显示全部楼层
风平老涡 发表于 2020-8-27 21:37
数组间赋值要求数组是必须conformed.
1 Do i = 1,700
2           Do j = 1,100

不好意思 原问题描述数组大小的时候 写错了 A B的前两维是相同的

6

帖子

2

主题

0

精华

入门

F 币
29 元
贡献
17 点
 楼主| 发表于 2020-8-28 09:23:35 | 显示全部楼层
necrohan 发表于 2020-8-27 17:00
Do i = 1,7
    B = A(:,:,(i-1)*100+1:i*100)
end Do

谢谢您  但是 不是这个意思
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2020-9-27 08:35

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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