0
我開發了一個函數來減小初始矢量的大小X = [x,y]
。但是對於500000點的X
和points_limit = 10000
,Matlab需要16秒才能完成此功能。Matlab:優化縮小矢量大小
有什麼方法可以優化這個,也許通過使用矩陣運算(vectorisation)去除循環?
function X = reduce_vector_size(X,points_limit)
while length(X) > points_limit
k = 1;
X2 = zeros(round(length(X(:,1))/2),2);
X = sortrows(X);
for i=1:2:length(X(:,1))-1
X2(k,1) = mean([X(i,1) ,X(i+1,1) ]);
X2(k,2) = mean([X(i,2) ,X(i+1,2) ]);
k = k + 1;
end
X = X2;
end
的其它最好的辦法是有一種新的方法:
Ratio = ceil(length(X(:,1))/points_limit);
X = ceil(X);
X = sortrows(X,1);
X = sortrows(X,2);
X1=[];
for i=1:points_limit - 1
X1 = [X1; mean(X(i*Ratio:(i+1)*Ratio,1)), mean(X(i*Ratio:(i+1)*Ratio,2))];
end
X = X1;
的目的是減少在載體中的點的數量:用於2D向量壓縮函數的形式。
你知道我是否可以用循環做這個新方法?
你對我的壓縮算法有什麼看法?
如果你描述你想要做什麼這將有助於。 – beaker
我想減少太長的vertor。例如,如果X = 500000的長度,我想在不改變矢量的情況下可以減少30 000點的長度。 – gpbdr13
對不起,這並不能告訴我任何事情。如果你只是想將矢量的長度減少到30,000點,你可以使用'X = X(1:30000)'。當然還有其他事情在這裏發生。 – beaker