声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1450|回复: 12

[编程技巧] Input argument "keepDOF" is undefined?

[复制链接]
发表于 2010-2-25 12:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
小弟初学matlab,作业是求static condensation
以下为问题:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [K]=static_condensation(Kx,keepDOF)
n11=max(size(keepDOF)); n22=max(size(Kx))-n11;
nt=max(size(Kx)); static11=keepDOF; k=1; li=1;
for i=1:nt
    if(li<=n11)
        for l=li:n11
            if(i==static11(l)), li=li+1; break;
            else static22(k)=i; k=k+1; break; end
        end
    else
        static22(k)=i; k=k+1;
    end
end
for i=1:n11
    for j=1:n11, K11(i,j)=Kx(static11(i),static11(j)); end
end
for i=1:n22
    for j=1:n22, K22(i,j)=Kx(static22(i),static22(j)); end
end
   
for i=1:n11
    for j=1:n22,  K12(i,j)=Kx(static11(i),static22(j)); end
end
for i=1:n22
    for j=1:n11, K21(i,j)=Kx(static22(i),static11(j)); end  
end
K22S=-K12*K22^(-1)*K21; K=K11+K22S;

        我运行之后出现以下描述:

??? Input argument "keepDOF" is undefined.
Error in ==> static_condensation at 3
n11=max(size(keepDOF));

不知道是哪里出错了。。。求高手解惑,小弟在这里感激不尽!!

[ 本帖最后由 ChaChing 于 2010-2-25 14:39 编辑 ]

command window中显示错误

command window中显示错误
回复
分享到:

使用道具 举报

发表于 2010-2-25 13:11 | 显示全部楼层

回复 楼主 pengningsolo 的帖子

LZ怎呼叫? 估计呼叫时有误!

[ 本帖最后由 ChaChing 于 2010-2-25 13:36 编辑 ]
 楼主| 发表于 2010-2-25 13:16 | 显示全部楼层

回复 沙发 ChaChing 的帖子

呼叫?不好意思这是啥意思。。?
我没有赋值。这是老师的代码 他说可以运行,但是出现了问题
他说 复制粘贴到editor再运行它就可以。可是我一运行,就出现上述问题。源代码我没有改动

[ 本帖最后由 ChaChing 于 2010-2-25 13:37 编辑 ]
发表于 2010-2-25 13:36 | 显示全部楼层
Ref: 4F, 常见的程序出错问题整理 (eight)
http://forum.vibunion.com/forum/thread-46001-1-1.html
 楼主| 发表于 2010-2-25 14:25 | 显示全部楼层

回复 地板 ChaChing 的帖子

还是不太懂。。具体到我这个例子 该如何操作呢。

小弟新手。。
发表于 2010-2-25 14:36 | 显示全部楼层

回复 5楼 pengningsolo 的帖子

LZ怎呼叫? 就是在command window中LZ怎下命令!?
抱歉, 可能一些用词两岸习惯用法不同
估计LZ是在Editor window直接按执行(Run)

请先将该函数存成同名档, 再在command window中呼叫!

[ 本帖最后由 ChaChing 于 2010-2-25 14:41 编辑 ]
 楼主| 发表于 2010-2-25 14:44 | 显示全部楼层

回复 6楼 ChaChing 的帖子

对头,我直接在editor界面下点击debug---run--了。command 里没有下命令

何谓同名档?其格式还是.m文件?

[ 本帖最后由 ChaChing 于 2010-2-25 16:09 编辑 ]
发表于 2010-2-25 16:00 | 显示全部楼层

回复 7楼 pengningsolo 的帖子

抱歉, 就是相同名字的档案(static_condensation.m)

[ 本帖最后由 ChaChing 于 2010-2-25 16:09 编辑 ]
 楼主| 发表于 2010-2-26 03:40 | 显示全部楼层

回复 8楼 ChaChing 的帖子

呃。。我又有个疑问,怎么在comment window里呼叫?它里面没有任何菜单啊。

我先把code从editor菜单里全部复制,然后在comment window中粘贴,但还是出现
??? function [K]=static_condensation(Kx,keepDOF)
    |
Error: Function definitions are not permitted at the prompt or in scripts.
不好意思,还得麻烦您。。
发表于 2010-2-26 05:08 | 显示全部楼层
ChaChing老师已经说得比较明白了,其实就是matlab函数如何调用的问题。你先把你的代码放在编辑器里,然后保存成文件名和函数名一样的文件,即保存成static_condensation.m。然后就可以调用了。可以在command window里调用,也可以在另外的m文件中调用。以command window为例,可以这样调用:
>> k=static_condensation([1,2,3;4,5,6;,7,8,9],[2,1;3,1])

k =

    -3    -6
    -6   -12
建议楼主看看matlab的基本知识。

评分

1

查看全部评分

发表于 2010-2-26 08:09 | 显示全部楼层
其实这些应属基础使用, 可能个人表达不佳, 致LZ未理解!
若非LZ人在海外, 考虑应多给帮忙, 不然也可能建议先"看看matlab的基本知识"!:@)
 楼主| 发表于 2010-2-27 02:00 | 显示全部楼层

回复 11楼 ChaChing 的帖子

谢谢你。。小弟现在身处国外。。也是第一次用matlab

我先好好看下新手入门:)
 楼主| 发表于 2010-2-27 02:01 | 显示全部楼层

回复 10楼 friendchj 的帖子

谢谢这位大哥
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 01:02 , Processed in 0.062520 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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