【问题标题】:function in matlab- undefined input argument errormatlab中的函数-未定义的输入参数错误
【发布时间】:2017-07-27 23:06:44
【问题描述】:

我不明白这段代码有什么问题。如果有人可以提供帮助,我将不胜感激。

function [out] = detj(in1)
%DETJ Summary of this function goes here
%Detailed explanation goes here: N is 2*50 matrix and in1 is scaler
    global N 
    out=(1/8)*(N(1,in1));
end

错误是:

输入参数“in1”未定义。
==> detj 在 7 处出错
out=(1/8)*(N(1,in1));

我在另一个文件中定义了 N

N=importdata('Nodes.txt'); %Matrix of nodes

【问题讨论】:

  • 如果您想得到答案,我建议您拆分发生错误的语句并提供输入示例。即,in1、in2、in3、in4、N、r、s 是什么样的?你是怎么调用这个函数的?
  • 看来您在调用detj 时没有任何输入参数
  • 按照 Durkee 的建议,在主脚本中添加调用函数 detj 以及创建 Nin1 变量的部分。

标签: matlab


【解决方案1】:

你的代码没有问题,只是你用错了函数。

要在 Matlab 中使用函数,您需要调用它,而不是直接运行它。

这是你原来的功能代码

function [out] = detj(in1,in2,in3,in4)
      %DETJ Summary of this function goes here
      %   Detailed explanation goes here %N is 2*50 Matrix
     global N r s
    out=zeros(2,2);
    for m=1:2
    for n=1:2
     out(m,n)=(1/8)*(((N(1,in1)-N(1,in3))*(N(2,in2)-N(2,in4))-(N(2,in1)-N(2,in3))*(N(1,in2)-N(1,in4)))-r(1,m)*((N(1,in3)-N(1,in4))*(N(2,in1)-N(2,in2))-(N(2,in3)-N(2,in4))*(N(1,in1)-N(1,in2)))+s(1,n)*((N(1,in2)-N(1,in3))*(N(2,in1)-N(2,in4))-(N(2,in2)-N(2,in3))*(N(1,in1)-N(1,in4))));
 end
 end
end

为了使用你的功能,我尝试了一个简单的代码,

clc;clear;
global N
global r
global s 
N=ones(2,50);
r=ones(2,2);
s=ones(2,2);
detj(1,2,3,4)

我得到了答案

ans =

 0     0
 0     0

所以你的功能没有问题,只是你需要知道如何使用它。

如果我的答案不清楚,请告诉我,否则祝你好运。

【讨论】:

  • 我的错,所以如果我们运行一个函数,我们得到一个错误并不重要?
  • 是的,实际上我看不到任何运行函数的理由。只要确保每次更改函数时都保存它
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多