pengningsolo 发表于 2010-2-25 12:45

Input argument "keepDOF" is undefined?

小弟初学matlab,作业是求static condensation
以下为问题:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function =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 编辑 ]

ChaChing 发表于 2010-2-25 13:11

回复 楼主 pengningsolo 的帖子

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

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

pengningsolo 发表于 2010-2-25 13:16

回复 沙发 ChaChing 的帖子

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

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

ChaChing 发表于 2010-2-25 13:36

Ref: 4F, 常见的程序出错问题整理 (eight)
http://forum.vibunion.com/forum/thread-46001-1-1.html

pengningsolo 发表于 2010-2-25 14:25

回复 地板 ChaChing 的帖子

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

小弟新手。。

ChaChing 发表于 2010-2-25 14:36

回复 5楼 pengningsolo 的帖子

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

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

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

pengningsolo 发表于 2010-2-25 14:44

回复 6楼 ChaChing 的帖子

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

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

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

ChaChing 发表于 2010-2-25 16:00

回复 7楼 pengningsolo 的帖子

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

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

pengningsolo 发表于 2010-2-26 03:40

回复 8楼 ChaChing 的帖子

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

我先把code从editor菜单里全部复制,然后在comment window中粘贴,但还是出现
??? function =static_condensation(Kx,keepDOF)
    |
Error: Function definitions are not permitted at the prompt or in scripts.
不好意思,还得麻烦您。。

friendchj 发表于 2010-2-26 05:08

ChaChing老师已经说得比较明白了,其实就是matlab函数如何调用的问题。你先把你的代码放在编辑器里,然后保存成文件名和函数名一样的文件,即保存成static_condensation.m。然后就可以调用了。可以在command window里调用,也可以在另外的m文件中调用。以command window为例,可以这样调用:
>> k=static_condensation(,)

k =

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

ChaChing 发表于 2010-2-26 08:09

其实这些应属基础使用, 可能个人表达不佳, 致LZ未理解!
若非LZ人在海外, 考虑应多给帮忙, 不然也可能建议先"看看matlab的基本知识"!:@)

pengningsolo 发表于 2010-2-27 02:00

回复 11楼 ChaChing 的帖子

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

我先好好看下新手入门:)

pengningsolo 发表于 2010-2-27 02:01

回复 10楼 friendchj 的帖子

谢谢这位大哥
页: [1]
查看完整版本: Input argument "keepDOF" is undefined?