我想在VHDL中處理LU分解。我是VHDL的入門者。於是我開始在MATLAB中實現LU分解算法。LU分解在VHDL
a = [1 2 2;3 4 4;5 6 6];
x=a;
n=size(x,1);
l=zeros(n,n);
u=zeros(n,n);
for k=1:n
if (a(k,k)~=0)
u(k,k)=x(k,k);
l(k,k)=1;
for i=k+1:n
l(i,k)=x(i,k)/x(k,k);
u(k,i)=x(k,i);
end
for i=k+1:n
for j=k+1:n
x(i,j)=x(i,j)-(l(i,k)*u(k,j));
end
end
else break
end
end
然後我開始做這個沒有for循環,因爲for循環在vhdl中不像matlab那樣工作。現在,我正面臨爲級聯for循環找到等效代碼的問題。
a = [1 2 2;3 4 4;5 6 6];
x=a;
n=size(x,1);
l=zeros(n,n);
u=zeros(n,n);
k=1;
m=2;
j=2;
p=2;
for clock=1:100
if k>=1 && k<=n
if (a(k,k)~=0)
u(k,k)=x(k,k);
l(k,k)=1;
else disp('Decomposition not possible')
return
end
if (m>=k+1 && m<=n)
l(m,k)=x(m,k)/x(k,k);
u(k,m)=x(k,m);
m=m+1;
end
if p>=k+1 && p<=n
if j>=k+1 && j<=n
x(p,j)=x(p,j)-(l(p,k)*u(k,j));
j=j+1;
end
if j==n+1
p=p+1;
j=2;
end
end
end
k=k+1;
end
我知道最後一個代碼不等於上一個代碼。有人可以幫助我在VHDL中做這個提示嗎?
搜索「matlab lu」? – patrik