在Matlab中以预定长度之一变换矢量

时间:2016-06-01 19:42:42

标签: matlab

我正在寻求帮助以更快的方式编写以下的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

你知道更快的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下替代方案,但最多只能加速(结果会略有不同,具体取决于mn)。很难想象这是一个瓶颈 - 最有可能改进代码的其他部分会带来更大的好处。

B = zeros(n,1);
B(1:min(n,length(A))) = A(1:min(n,length(A)));