matlab中的rands报错 初始化阶段 [W,b] = rands(S,R)提示错误Too many output arguments

作者&投稿:赵疫 (若有异议请与网页底部的电邮联系)
matlab里面[a,b]=rands(5,1)为什么提示错误?~

可以看下matlab关于rands的帮助文件,rands(5,1)返回的是一个5*1的值在-1到1之间的随机矩阵,而你的语句是把返回的矩阵赋予a,b两个矩阵,所以出错,可以改为a=rands(5,1)就行了

这个问题和神经元算法实现有关。
你看一下程序的源代码,注意看最下下面标出的那两行:

function [w,b] = rands(s,pr)
%RANDS Symmetric random weight/bias initialization function.
%
% Syntax
%
% W = rands(S,PR)
% M = rands(S,R)
% v = rands(S);
%
% Description
%
% RANDS is a weight/bias initialization function.
%
% RANDS(S,PR) takes,
% S - number of neurons.
% PR - Rx2 matrix of R input ranges.
% and returns an S-by-R weight matrix of random values between -1 and 1.
%
% RANDS(S,R) returns an S-by-R matrix of random values.
% RANDS(S) returns an S-by-1 vector of random values.
%
% Examples
%
% Here three sets of random values are generated with RANDS.
%
% rands(4,[0 1; -2 2])
% rands(4)
% rands(2,3)
%
% Network Use
%
% To prepare the weights and the bias of layer i of a custom network
% to be initialized with RANDS:
% 1) Set NET.initFcn to 'initlay'.
% (NET.initParam will automatically become INITLAY's default parameters.)
% 2) Set NET.layers{i}.initFcn to 'initwb'.
% 3) Set each NET.inputWeights{i,j}.initFcn to 'rands'.
% Set each NET.layerWeights{i,j}.initFcn to 'rands';
% Set each NET.biases{i}.initFcn to 'rands'.
%
% To initialize the network call INIT.
%
% See also RANDNR, RANDNC, INITWB, INITLAY, INIT

% Mark Beale, 1-31-92
% Revised 12-15-93, MB
% Revised 11-31-97, MB
% Copyright 1992-2008 The MathWorks, Inc.
% $Revision: 1.1.6.7 $ $Date: 2008/06/20 08:04:33 $

fn = mfilename;
if (nargin < 1), error('NNET:Arguments','Not enough arguments.'); end
if ischar(s)
switch(s)
case 'name'
w = 'Midpoint';
otherwise, error('NNET:Arguments',['Unrecognized code: ''' s ''''])
end
return
end

if nargin == 1
r = 1;
elseif size(pr,2) == 1
r = pr;
else
r = size(pr,1);
end
w = 2*rand(s,r)-1;//看着个地方

% **[ NNT2 Support ]**
if nargout == 2
b = 2*rand(s,1)-1; //看着个地方

end])

可能是你的版本问题,我之前也出现过这样的问题。
你可以换个版本,或者改写下程序。
你可以改成这样:
W=rands(S,R);
b=rands(S,1);
第二句的“1”你可以换成你的b矩阵的列数,我的矩阵列数是1,所以用1。
基本你的问题应该就能解决了。

输入变量太多了,
rands只有一个输出量。改为: [W] = rands(S,R)

如:
x1=rands(4,[0 1; -2 2])
x2=rands(4)
x3=rands(2,3)

首先,你的问题确实是输出元素太多,可以在函数库里找一下这个函数,打开后,对应的函数开始应该是function [w,b] = rands(s,pr),而你的函数应该是只有一个输出的function [w] = rands(s,pr),可以在网上找找你要的那个函数,自己加个变量就行了

w= rands(S,R);
b= rands(S,R);


高碑店市18936557726: matlab中的rands报错 初始化阶段 [W,b] = rands(S,R)提示错误Too many output arguments -
里味甲磺: 可能是你的版本问题,我之前也出现过这样的问题.你可以换个版本,或者改写下程序.你可以改成这样:W=rands(S,R); b=rands(S,1); 第二句的“1”你可以换成你的b矩阵的列数,我的矩阵列数是1,所以用1.基本你的问题应该就能解决了.

高碑店市18936557726: matlab里面[a,b]=rands(5,1)为什么提示错误? -
里味甲磺: 可以看下matlab关于rands的帮助文件,rands(5,1)返回的是一个5*1的值在-1到1之间的随机矩阵,而你的语句是把返回的矩阵赋予a,b两个矩阵,所以出错,可以改为a=rands(5,1)就行了

高碑店市18936557726: matlab rand 随机数 矩阵维数不对 -
里味甲磺: 正常情况是不会出现这种事的,原因可能有:一,你的软件中rand命令坏了,这种情况可能性不大.二,在当前文件夹中,存在一个叫rand.m的函数文件,能生成1*8的随机数,阻挡了对正常rand函数的调用.有的人在保存文件时,起名不加考虑,与matlab带的函数重名,就会出现这种情况.

高碑店市18936557726: 关于matlab的运行错误:One or more output arguments not assigned during call to
里味甲磺: 我这里是正常的,给你复制几个结果:iw1 = 0.8268 -0.4430 0.2647 0.0938 -0.8049 0.9150b1 = 0.6294 0.8116 -0.7460

高碑店市18936557726: MATLAB运行时出错:Undefined function or method 'chap4 - 8m1' for input arguments of type 'double'. -
里味甲磺: 可能是你的目录没有设置对吧,一定要将当前目录设置成matlab的工作目录,否则程序就不会正确运行,因为如果目录没有设置的话,matlab会到默认的工作空间找函数,也就是 matlab安装目录下的 work 文件夹,如果那个下面没有这个函数,...

高碑店市18936557726: 你好我想知道你在用matlab求解参数的时候...那个初值时怎么算的? -
里味甲磺: 一般都是随机初始化的,不能自己去赋值.%权值初始化 w1=rands(midnum,innum); b1=rands(midnum,1); w2=rands(midnum,outnum); b2=rands(outnum,1); w2_1=w2;w2_2=w2_1; w1_1=w1;w1_2=w1_1; b1_1=b1;b1_2=b1_1; b2_1=b2;b2_2=b2_1;

高碑店市18936557726: 怎样求用matlab nlinfit 拟合的参数的标准误 -
里味甲磺: 怎样求用matlab nlinfit 拟合的参数的标准误 问题一:初值选择不合适;解决对策:p0=rand(1,3)问题二:表述的自定义函数只适用单个数据计算;解决对策:采用数组的形式参与计算,即应改为fun=inline('exp(-p(1)*t).*exp(-p(2)*t).*((p(1)*p(3)*exp(...

高碑店市18936557726: matlab解微分方程组报错,Not enough input arguments. -
里味甲磺: 问题分析:函数文件和ode45语句;ode45要对这个函数进行仿真,所以不能放在函数文件中.正确代码:1. 保存函数文件:rigid.m function dy=rigid(t,y) dy=zeros(3,1); dy(1)=0.7*y(2)*y(1)/(0.02+y(2)); dy(2)=0.7*y(2)/(0.02+y(2))/0.5*y(1); dy(3)=0.1*dy(1)+0.02*y(1); end2. command window 输入:[t,y]=ode45('rigid',[0 100],[0 0 0])

高碑店市18936557726: matlab中rands这个函数怎么用,请解释下!最好举例说明下 -
里味甲磺: RANDS(S,PR) 使用, S - 神经元数. PR - Rx2 矩阵R 的输入范围. 返回一个 随机值介于 -1 和 1的S*R 权值矩阵.

高碑店市18936557726: 在matlab中求解微分方程时不能设定初始值的问题
里味甲磺: 我这里是用MATLAB6.5,我直接复制你的第一行的 dsolve('Dh=1000*(2*h)^(1/2)','h(0)=1') 进去,可以得到结果 ans = [ 500000*t^2+1000*2^(1/2)*t+1] [ 500000*t^2-1000*2^(1/2)*t+1] 你再看一下有没有什么输错了啊. 不带初值,我解出来的结果是 dsolve('Dh=1000*(2*h)^(1/2)') ans = 500000*t^2+1000*2^(1/2)*t*C1+C1^2

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网