我无法理解这段代码的问题。如果有人可以提供帮助,我将感激不尽。
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
答案 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
所以你的功能没问题,只需要知道如何使用它。
如果我的回答不清楚,请告诉我其他好运。