我有一个函数可以获取矩阵并对其执行一些操作。 但我不知道如何声明函数的参数。 这是我的功能代码:
function D=Shirinkage(a)
D(1,:)=a(1,:);%this is X1
for i=2:4
D(i,4)=0;
for j=1:3
D(i,j)=1/2*(a(1,j)+a(i,j));
D(i,4)=D(i,j)^2 + D(i,4); %object function
end
end
end
我尝试了a(4,4)
而不是a
(函数的参数),但错误没有出现。
错误:
??? Input argument "a" is undefined.
Error in ==> Shirinkage at 3
D(1,:)=a(1,:);%this is X1
我也想正确宣布D
。
感谢任何帮助。
编辑: 我用脚本文件调用我的函数,这样: 我有一个二维数组(矩阵),其大小为:4 * 4,其名称为A. 我希望我的函数获取此矩阵并对其执行操作,结果可以再次保存在其中。
A=Shirinkage(A)
e.x。 A有这个值:
A=[1,2,3,4;2,3,4,5;5,6,7,8;1,2,3,4]
答案 0 :(得分:1)
您创建的功能正常。我必须预先分配D
的大小,因为它在当前代码的每次迭代中都会有所不同。
function D = Shirinkage(a)
D = zeros(size(a));
D(1,:) = a(1,:); %this is X1
for i = 2:4
D(i,4) = 0;
for j = 1:3
D(i,j) = 0.5*(a(1,j) + a(i,j));
D(i,4) = D(i,4) + D(i,j)^2; %object function
end
end
end
通过使用您使用的相同矩阵从命令窗口调用该函数,它给出了以下输出。
您发布的错误表明该功能尚未收到参数a
。如果您的脚本和函数在同一个MATLAB路径中,那么这应该是完美的。