matlab中的函数 - 未定义的输入参数错误

时间:2017-07-27 14:29:29

标签: matlab

我无法理解这段代码的问题。如果有人可以提供帮助,我将感激不尽。

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 at 7
  OUT =(1/8)*(N(1,IN1));

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

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

1 个答案:

答案 0 :(得分: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

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

如果我的回答不清楚,请告诉我其他好运。