我在Labview中運行的Matlab腳本有一個問題:如果在Labview中調用,它需要0.5秒的時間在Matlab上運行,超過10秒。我知道這應該會慢一些,但是...有人可以看看我的代碼,看看有沒有辦法改進它?我害怕寫它在純的Labview ...在Labview中提高Matlab腳本的速度
clearvars
Size0=1024;
Size1=1280;
r=1;
g=1;
b=1;
RedArray=ones(Size0,Size1);
GreenArray=2*RedArray;
BlueArray=3*RedArray;
G1(Size0,:)=GreenArray(Size0,:);
G2(Size0,:)=GreenArray(Size0,:);
G1(1,:)=GreenArray(1,:);
G2(1,:)=GreenArray(1,:);
G1(:,Size1)=GreenArray(:,Size1);
G2(:,Size1)=GreenArray(:,Size1);
G1(:,1)=GreenArray(:,1);
G2(:,1)=GreenArray(:,1);
for(i=2:Size0-1)
for(j=2:Size1-1)
if(abs(GreenArray(i-1,j)-GreenArray(i+1,j))<abs(GreenArray(i,j-1)-GreenArray(i,j+1)))
G1(i,j)=(GreenArray(i,j)+GreenArray(i-1,j))/2;
G2(i,j)=(GreenArray(i,j)+GreenArray(i+1,j))/2;
elseif(abs(GreenArray(i-1,j)-GreenArray(i+1,j))>abs(GreenArray(i,j-1)-GreenArray(i,j+1)))
G1(i,j)=(GreenArray(i,j)+GreenArray(i,j+1))/2;
G2(i,j)=(GreenArray(i,j)+GreenArray(i,j-1))/2;
else
G1(i,j)=(2*GreenArray(i,j)+GreenArray(i,j+1)+GreenArray(i-1,j))/4;
G2(i,j)=(2*GreenArray(i,j)+GreenArray(i,j-1)+GreenArray(i+1,j))/4;
end
end
end
U=zeros(2*Size0,2*Size1);
U(1:2:2*Size0,1:2:2*Size1)=r*RedArray;
U(2:2:2*Size0,2:2:2*Size1)=b*BlueArray;
U(2:2:2*Size0,1:2:2*Size1)=g*G1;
U(1:2:2*Size0,2:2:2*Size1)=g*G2;
感謝
到底是如何調用你從LabVIEW的MATLAB代碼?它實際上是在MATLAB還是在NI的Mathscript中運行? – nekomatic
也FWIW:我不是MATLAB的專家,但它看起來好像在LabVIEW中實現代碼是相當簡單的... – nekomatic
vectorize循環擺脫if語句然後編譯到lib。 –