Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 八度错误:调用函数时参数1没有默认值_Matlab_Octave - Fatal编程技术网

Matlab 八度错误:调用函数时参数1没有默认值

Matlab 八度错误:调用函数时参数1没有默认值,matlab,octave,Matlab,Octave,我需要按列查找每个值的值。 所以我有这样的功能: function [X_norm, mu, sigma] = featureNormalize(X) X_norm = X; mu = zeros(1, size(X, 2)); sigma = zeros(1, size(X, 2)); for x = 1:size(X, 1) mu(1,x) = mean(:, x) sigma(1,x) = std(:, x) for y = 1:size(X, 2)

我需要按列查找每个值的值。 所以我有这样的功能:

function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = X;
mu = zeros(1, size(X, 2));
sigma = zeros(1, size(X, 2));

for x = 1:size(X, 1)
    mu(1,x) = mean(:, x)
    sigma(1,x) = std(:, x)
    for y = 1:size(X, 2)  
        X_norm(x,y) = (X(x,y) - mu)/sigma
    end  
end    

end
我试着这样调用这个函数:

>> X = [23 32 2 ; 23 23 1];
>> featureNormalize(X)

结果我得到这样的错误:调用函数时参数1没有默认值。我看不出这里出了什么问题,有什么建议吗?

我认为在如何使用
mean()
std()
函数方面存在问题,而且可能订阅的赋值也是一个问题

我不确定,但请尝试以下代码作为您的函数定义:

1。基于行的规范化:

function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 1));
sigma  = zeros(1, size(X, 1));

for x = 1:size(X, 1)
    mu(x)    = mean( X(x, :) );
    sigma(x) = std( X(x, :) );

    for y = 1 : size(X, 2)  
        X_norm(x, y) = ( X(x, y) - mu(x) ) / sigma(x);
    end  
end     
end
function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 2));
sigma  = zeros(1, size(X, 2));

for y = 1:size(X, 2)
    mu(y)    = mean( X(:, y) );
    sigma(y) = std( X(:, y) );

    for x = 1 : size(X, 1)  
        X_norm(x, y) = ( X(x, y) - mu(y) ) / sigma(y);
    end  
end     
end
2。基于列的规范化:

function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 1));
sigma  = zeros(1, size(X, 1));

for x = 1:size(X, 1)
    mu(x)    = mean( X(x, :) );
    sigma(x) = std( X(x, :) );

    for y = 1 : size(X, 2)  
        X_norm(x, y) = ( X(x, y) - mu(x) ) / sigma(x);
    end  
end     
end
function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 2));
sigma  = zeros(1, size(X, 2));

for y = 1:size(X, 2)
    mu(y)    = mean( X(:, y) );
    sigma(y) = std( X(:, y) );

    for x = 1 : size(X, 1)  
        X_norm(x, y) = ( X(x, y) - mu(y) ) / sigma(y);
    end  
end     
end

我认为在使用
mean()
std()
函数的方式上存在问题,并且可能订阅的赋值也是一个问题

我不确定,但请尝试以下代码作为您的函数定义:

1。基于行的规范化:

function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 1));
sigma  = zeros(1, size(X, 1));

for x = 1:size(X, 1)
    mu(x)    = mean( X(x, :) );
    sigma(x) = std( X(x, :) );

    for y = 1 : size(X, 2)  
        X_norm(x, y) = ( X(x, y) - mu(x) ) / sigma(x);
    end  
end     
end
function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 2));
sigma  = zeros(1, size(X, 2));

for y = 1:size(X, 2)
    mu(y)    = mean( X(:, y) );
    sigma(y) = std( X(:, y) );

    for x = 1 : size(X, 1)  
        X_norm(x, y) = ( X(x, y) - mu(y) ) / sigma(y);
    end  
end     
end
2。基于列的规范化:

function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 1));
sigma  = zeros(1, size(X, 1));

for x = 1:size(X, 1)
    mu(x)    = mean( X(x, :) );
    sigma(x) = std( X(x, :) );

    for y = 1 : size(X, 2)  
        X_norm(x, y) = ( X(x, y) - mu(x) ) / sigma(x);
    end  
end     
end
function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = zeros(size(X));
mu     = zeros(1, size(X, 2));
sigma  = zeros(1, size(X, 2));

for y = 1:size(X, 2)
    mu(y)    = mean( X(:, y) );
    sigma(y) = std( X(:, y) );

    for x = 1 : size(X, 1)  
        X_norm(x, y) = ( X(x, y) - mu(y) ) / sigma(y);
    end  
end     
end

如果您正在计算每个元素的标准化值,即每个
列的
平均值和
西格玛值,我认为您需要进行一些更改,因为您的问题代码并没有真正反映这一点,因为您使用的是
平均值和
西格玛值的数组。所以,我认为你需要做类似的事情-

%// Initialize array for final normalized values
X_norm = zeros(size(X));
for x = 1:size(X, 2)

    %// Store mean and standard deviation values for each column
    mu = mean(X(:, x))
    sigma = std(X(:, x))

    %// Use an innermost loop to calculate the normalized values 
    %// for all the elements in each column. 
    %// Thus, for all these elements, you need to use the same mean
    %// and standard deviation calculated in the previous step
    for y = 1:size(X, 1)  
        X_norm(y,x) = (X(y,x) - mu)/sigma
    end  
end  
使用-

X_norm = bsxfun(@rdivide, bsxfun(@minus, X, mean(X,1)),std(X,[],1))

如果您正在计算每个元素的标准化值,即每个
列的
平均值和
西格玛值,我认为您需要进行一些更改,因为您的问题代码并没有真正反映这一点,因为您使用的是
平均值和
西格玛值的数组。所以,我认为你需要做类似的事情-

%// Initialize array for final normalized values
X_norm = zeros(size(X));
for x = 1:size(X, 2)

    %// Store mean and standard deviation values for each column
    mu = mean(X(:, x))
    sigma = std(X(:, x))

    %// Use an innermost loop to calculate the normalized values 
    %// for all the elements in each column. 
    %// Thus, for all these elements, you need to use the same mean
    %// and standard deviation calculated in the previous step
    for y = 1:size(X, 1)  
        X_norm(y,x) = (X(y,x) - mu)/sigma
    end  
end  
使用-

X_norm = bsxfun(@rdivide, bsxfun(@minus, X, mean(X,1)),std(X,[],1))

我刚刚编辑了我的答案,请查看。编辑对我来说对结果更有意义。有一件事我认为很重要,但还没有人提到,那就是错误消息的含义。在倍频程中,您可以使用
来使用a,即
平均值(:)
使用默认值调用倍频程,在
平均值的情况下,
不存在。我刚刚编辑了我的答案,请检查。编辑对我来说对结果更有意义。有一件事我认为很重要,但还没有人提到,那就是错误消息的含义。在八度音阶中,您可以使用
来使用a,即
平均值(:)
使用默认值调用八度音阶,而在
平均值的情况下,
不存在。您的解决方案绝对正确,我混淆了行和列,非常感谢)@Rocketq我认为这会产生不同的结果。鉴于问题的文本,对我来说这更有意义,所以我这样说。确定你到底想要什么。要检查,请使用类似于
X=rand(5,4)
的方法。您的解决方案完全正确,我混淆了行和列,非常感谢)@Rocketq我认为这会产生不同的结果。鉴于问题的文本,对我来说这更有意义,所以我这样说。确定你到底想要什么。要检查,请使用类似于
X=rand(5,4)
的东西。您的答案正确,但我混淆了行和列)@Rocketq-我们混淆了“每列值的标准化值”。你想如何规范化矩阵,我的意思是根据什么?根据每行或每列的“平均值”和“标准值”做出决定。请你澄清一下这一点好吗?请看每一篇专栏文章,但别担心Divakar的解决方案很好谢谢你的修改,现在未来的读者就不会那么困惑了!:)@迪瓦卡-没错!有点混乱。我不确定未来的读者,因为这个问题的主题似乎有点个性化。没关系。谢谢(:你回答正确,但我混淆了行和列)@Rocketq-我们混淆了“每列值的标准化值”。你想如何标准化矩阵,我的意思是根据什么?取“平均值”和“标准值”每一行或每一列的作者都会做出决定。你可以澄清这一点吗?按每一列来做,但别担心,Divakar的解决方案很好谢谢你的更改,现在未来的读者不会那么困惑了!:)@Divakar-没错!有点混乱。我不确定未来的读者,因为这个问题的主题似乎有点个性化。没关系。谢谢