2016-06-01 6 views
1

次のMATLABコードをより速く書くための助けを求めています。コードは以下を実行していますMatlabで所定の長さのベクトルを変換する

(1)nの自然数と、の列ベクトルAを考えてみましょう。

m>n

(3)それ以外の場合はnx1ベクトルを取得するためにAに、最終的なゼロを追加

A

の唯一の最初のnの要素を保持する場合(2)私の試みはこれです:

n=4; 
A=[1 2 3 4 5]' 
if size(A,1)>n 
     A=A(1:n); %keep only the first n elements 
    else 
     A=[A; zeros(size(n-size(A,1)),1)]; %add zeros to get n elements 
end 

あなたはより速い方法を知っていますか?

答えて

2

次のような方法も試してみることもできますが、最高でスピードアップはほとんど目立たないでしょう(結果はmnに応じて若干異なります)。これがボトルネックであると想像するのは難しいでしょう - あなたのコードの他の部分を改善する可能性が最も高いのははるかに大きなメリットです。

B = zeros(n,1); 
B(1:min(n,length(A))) = A(1:min(n,length(A))); 
関連する問題