| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 722 人关注过本帖
标题:矩阵函数参数引用的问题
只看楼主 加入收藏
zxlzzjz
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-15
收藏
 问题点数:0 回复次数:5 
矩阵函数参数引用的问题
大家都知道在VB6里可以用二维数组来代表矩阵,我先定义了一个函数为矩阵的转秩,但是不知道怎么引用,引用的参数是什么。
比如下面矩阵转秩的函数:
   Public Function Trans(m() As Double) As Double()
         Dim n()
         Dim hang As Integer ' 定义行数
         Dim lie As Integer  ’定义列数
         ReDim m(hang, lie)
         ReDim n(lie, hang)
         For i = 0 To hang - 1
            For j = 0 To lie - 1
             n(j, i) = m(i, j)
            Next j
         Next i
    End Function
自己写的应该对吧?  然后后面引用此函数时怎么用,比如对A(3,4) 进行转秩
应该是 Trans(A()) 还是 Trans(A(3,4)),还是别的,怎么得到 A的转秩? 如在文本框里显示,Text.text=?
总是出现类型不匹配,急死小弟了
另求高手讲解一下,数组和二维数组的引用规则,
搜索更多相关主题的帖子: 函数 矩阵 参数 
2008-04-15 17:52
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
我觉得“
Dim hang As Integer ' 定义行数
         Dim lie As Integer  ’定义列数
         ReDim m(hang, lie)
         ReDim n(lie, hang)
有问题。
hang和lie究竟是多少?那么ReDim肯定通不过。而且“ReDim m(hang, lie)
”是错误的,这是传值传过来的,你再一定义,其值全干掉了。
所以应该:
dim L as integer
dim U as integer
dim x as integer
dim i as integer

l=Lbound(m())
U=ubound(m())
redim n(U,L)
dim j as integer

for each x in m()
   for j=0 to L
      n(i,j)=x

   next
   i+i+1
next

总之,你不能改变m()数组的值。

2008-04-15 19:16
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
思路就是这样,你按这个思路把上面的代码进行修改,应该是可以的。

2008-04-15 19:17
zxlzzjz
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-15
收藏
得分:0 
谢谢楼上的大哥了。有点懂了。 但是比如定义此过程 为 Function Trans(m())
下面要调用此过程 怎么写语句呀 怎么总是 类型不匹配?
2008-04-15 19:24
zxlzzjz
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-15
收藏
得分:0 
关键是调用 过程中的参数怎么写 比如
'下面是求矩阵逆阵的函数
Public Function Inv(m() As Double) As Double()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim n As Integer
下面N长
这是个通用过程,在窗体中调用INV函数
怎么写语句 急
如 dim a(2,1) as double
a(0,0)=1
...‘ 省略
a(2,1)=6
求a(2,1)的逆阵b()
怎么调用此INV函数

[[it] 本帖最后由 zxlzzjz 于 2008-4-15 20:32 编辑 [/it]]
2008-04-15 19:28
xiaolaba3330
Rank: 1
来 自:辽宁大连
等 级:新手上路
帖 子:175
专家分:0
注 册:2007-10-19
收藏
得分:0 
Dim a(1 To 8, 1 To 8) As Integer, b(1 To 8, 1 To 8) As Integer

Private Sub Command1_Click()
For i = 1 To 8
 For j = 1 To 8
b(j, i) = GetArray(a(i, j))
Next
Next
Picture1.CurrentY = 80
For i = 1 To 8
 For j = 1 To 8
 Picture1.Print Format(b(i, j), "@@@");
 Next
 Picture1.Print
 Picture1.Print
 Next
End Sub

Private Sub Form_Activate()
 Form_Load
End Sub

Private Sub Form_Load()
k = 0
For i = 1 To 8
 For j = 1 To 8
 a(i, j) = j + k
Next
k = k + 8
Next
Picture1.CurrentY = 80
For i = 1 To 8
 For j = 1 To 8
 Picture1.Print Format(a(i, j), "@@@");
 Next
 Picture1.Print
 Picture1.Print
 Next
End Sub
Private Function GetArray(m()) As Integer()
Dim L As Integer
Dim U As Integer
L = LBound(m())
U = UBound(m())
ReDim n(U, L)
 For i = 1 To U
  For j = 1 To L
   n(j, i) = m(i, j)
   Next
   Next
   GetArray = n
End Function

我写了个程序 但是在b(j, i) = GetArray(a(i, j))这句出错了 怎么改啊?

编程学习中~~
2008-04-15 23:35
快速回复:矩阵函数参数引用的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved