明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2214|回复: 5

矩阵表如何修改其中一个数据

[复制链接]
发表于 2005-1-9 14:43:00 | 显示全部楼层 |阅读模式
有一个类似于矩阵的表(mXn)
(
(1 2 3 4 5 6 7 8 9 10 11 12)
(13 14 15 16 17 18 19 20 21 22 23 24)
(25 26 27 28 29 30 31 32 33 34 35 36)
(37 38 39 40 41 42 43 44 45 46 47 48)
(49 50 51 52 53 54 55 56 57 58 59 60)
(61 62 63 64 65 66 67 68 69 70 71 72)
(73 74 75 76 77 78 79 80 81 82 83 84)
) 现在要修改第I行第J列的一个数据,有不有快速的方法。
发表于 2005-1-9 14:59:00 | 显示全部楼层
首先找出第i行。然后再找出第j例,然后再送回到i.然后再送回到表。若当满足了你的条件的话,顺便把。j的值改为你想要的,当不满足条件就原封不动送回表中。这样就不会改变表中的数据排例了,不知能不能达到你的要求。
发表于 2005-1-10 20:47:00 | 显示全部楼层
subst + nth
 楼主| 发表于 2005-1-10 21:23:00 | 显示全部楼层
_$         (setq lst3 (cons "One" lst2 ))         


("One" 1.0 "One" 1 "One")


subst 函数可以用新项替换表中出现某个项。如下代码将用字符串“one”替换表中所有的字符串“One”。


_$         (setq lst4 (subst "one" "One" lst3))         


("one" 1.0 "one" 1 "one")


按帮助文件试验,假如矩阵表中有两个相同数据的项则会一同被替换。


现在我的笨办法是先公为点对表,然后再用assoc搜索替换某一项数据,最大再将点对表还原为矩阵表,方法似乎太笨,(当然效果可以达到),现在是想寻找新的方法和最优的钥匙。
发表于 2005-1-11 08:34:00 | 显示全部楼层
我觉得只能是全部循环一次,依次写到另一个表,碰到要修改的项,就将新数据写到新表里,其余则从旧表取出写如新表。。。


subst和assoc都有一个问题,就是如果有相同的数,就会出现问题,如果保证所有的数都不相同,才可以使用这两个函数
发表于 2005-1-12 11:13:00 | 显示全部楼层
网上的: http://www.xdcad.net/forum/showthread.php?postid=1394244#post1394244 ;;************************************************************ 3 *****;;;
;| (
subilst a ilst lst) = 表项替换,支持子表.----------------ok!---------梦断江南.2004.10
功能
: 用a替换ilst中指定位置的lst的项.
参数: a = 要替换的项,可是元素或表.
ilst = 整数或整数定位表,'(2 3 1),将替换表中第二项的第三项的第一个项.'
lst = 要被替换的表.
返回: 成功:替换后的新表. 失败,返回原表.
说明: 可单独运行,无需加载其他函数.
用了第归的方法.
测试: (setq a 333 ilst '(2 3 1) lst '(0 0 (0 0 0 (0 0)) 0 ))
(
subilst a 2 lst) -> (0 0 333 0) (setq ilst 2)
(
subilst a ilst lst) -> (0 0 (0 0 0 (0 333)) 0)
(
subilst '333 '(2 3 5) lst) -> (0 0 (0 0 0 (0 0)) 0)
|;
;;*******************************************************************************;;;
(
defun subilst (a ilst lst / n)
(
setq n -1)
(if (
atom ilst)(setq ilst (list ilst)))
(
mapcar '(lambda(x)
(setq n (1+ n))
(if (= (car ilst) n)
(if (= 1 (length ilst)) a (subilst a (cdr ilst) x))
x
)
)
lst
)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 22:29 , Processed in 0.151583 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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