Fortran Coder

查看: 12724|回复: 2
打印 上一主题 下一主题

[求助] No matching user defined OPERATOR with the given type and rank has been defined

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
14 点
跳转到指定楼层
楼主
发表于 2015-1-2 14:49:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
program main
  use imsl
  implicit none
  real a(3,3),b(3,2),C(2,3)
  b(:,1)=1
  c(1,:)=2
  a=b(:,1).x.c(1,:)
  write(*,*) a
end

显示这样的问题:Error: No matching user defined OPERATOR with the given type and rank has been defined.   [X]
  a=b(:,1).x.c(1,:) 为什么不能这样子写呢?下面的情况也是差不多的,
[Fortran] 纯文本查看 复制代码
program main
  use imsl
  implicit none
  real a(3,3),a1(3,3),a2(3,3),b(3,1),C(1,3),temp
  b(:,1)=1
  c(1,:)=2
  a1=b.x.c
  a2=b.x.c
  a=a1+a2
  a=b.x.c
  write(*,*) a
  temp=c.x.b
  write(*,*) temp
end

Error: The shapes of the array expressions do not conform.   [TEMP]
  temp=c.x.b

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

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

沙发
发表于 2015-1-2 15:40:05 | 只看该作者
改为:
a=b(:,1:1).x.c(1:1,:)
既可。

因为 .x. 是矩阵相乘,两边必须是二维数组(矩阵)

b(:,1) 是一维数组,大小是 3
b(:,1:1) 是二维数组,大小是 3*1
第二个 temp 的问题,请在第一个问题的基础上自行思考。(错误很相似哦~~)


祝,元旦好!

3

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
14 点
板凳
 楼主| 发表于 2015-1-3 13:07:39 | 只看该作者
谢谢,明白了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-29 18:59

Powered by Tencent X3.4

© 2013-2024 Tencent

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