Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/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中用广义Hebbian算法计算权重_Matlab - Fatal编程技术网

在matlab中用广义Hebbian算法计算权重

在matlab中用广义Hebbian算法计算权重,matlab,Matlab,我有一个任务要用matlab做一些计算。。我使用广义Hebbian算法来计算一些权重,这里是Hebbian算法的函数,切片15 这是我的密码 alfa=0.5; e=randn(3,5000); A=[1 0 0;-0.5 0.5 0;0.3 0.1 0.1]; x=A*e; W=rand(3); nn=size(x); for n=1:nn y=W*x(:,n); k=tril(y*y')*W; W(:,n+1)= alfa*(y*x(:,n)'-k); end 在

我有一个任务要用matlab做一些计算。。我使用广义Hebbian算法来计算一些权重,这里是Hebbian算法的函数,切片15

这是我的密码

alfa=0.5;
e=randn(3,5000);
A=[1 0 0;-0.5 0.5 0;0.3 0.1 0.1];
x=A*e;
W=rand(3);
nn=size(x);
for n=1:nn
    y=W*x(:,n);
    k=tril(y*y')*W;
    W(:,n+1)= alfa*(y*x(:,n)'-k);
end
在我的任务中,我知道x=A*e; 但我不知道我的迭代方式是否正确? 我的for循环是否正确? 下面的方程式正确吗

    y=W*x(:,n);
    k=tril(y*y')*W;
    W(:,n+1)= alfa*(y*x(:,n)'-k);
W:,n+1应该打印出一个3*3的矩阵,我所理解的是。。。 Matlab在运行此代码时说:使用* 内部矩阵尺寸必须一致


谢谢

如果检查每个矩阵的大小,您会发现顺序不正确:

size(x)
ans =
 3 5000

size(W)
ans = 
3 3
所以你应该把它们乘以

for n=1:nn
    y=W*x;
end
但是这一部分也没有意义,

k=tril(y'*y)*W;
因为trily'*y是一个矩阵大小5000x5000,W是3x3。所以我想你应该把它改成:

k=tril(y*y')*W;

然后alfa*y*x'-k;将是一个3x3矩阵。

请查看我的编辑,确定我是否在W:,n+1.中使用了正确的矩阵尺寸。。你认为这是正确的吗???谢谢你为什么要做W:,n+1?W是一个3x3矩阵,然后alfa*y*x'-k创建另一个可替换的3x3矩阵。