我正在寻求帮助以更快的方式编写以下的Matlab代码。代码正在执行以下操作
(1)考虑自然数n
和维度A
的列向量mx1
。
(2)如果m>n
仅保留n
的第一个A
元素
(3)否则将最终零添加到A
以获取nx1
向量
我的尝试是这样的:
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
你知道更快的方法吗?
答案 0 :(得分:2)
您可以尝试以下替代方案,但最多只能加速(结果会略有不同,具体取决于m
和n
)。很难想象这是一个瓶颈 - 最有可能改进代码的其他部分会带来更大的好处。
B = zeros(n,1);
B(1:min(n,length(A))) = A(1:min(n,length(A)));