如何在函数中将2维数组声明为参数在MATLAB中?

时间:2016-10-14 21:31:55

标签: matlab

我有一个函数可以获取矩阵并对其执行一些操作。 但我不知道如何声明函数的参数。 这是我的功能代码:

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]

1 个答案:

答案 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

通过使用您使用的相同矩阵从命令窗口调用该函数,它给出了以下输出。

Output

您发布的错误表明该功能尚未收到参数a。如果您的脚本和函数在同一个MATLAB路径中,那么这应该是完美的。