我在 matlab 工作。我有一个行向量in
和一个标量数fuzzy_no
。我想创建一个大小为output
的矩阵fuzzy_no x (numel(in)-fuzzy_no)
。这样矩阵ith
的{{1}} col就具有来自行向量output
的{{1}}的元素。
换句话说,我想在不使用循环
的情况下实现以下循环i:i+fuzzy_no-1
答案 0 :(得分:1)
请注意,在您的示例中,in
中缺少output
中的最后一个元素。假设您需要所有元素,您可以使用索引:
[ii, jj] = meshgrid(1:fuzzy_no, 0:n-fuzzy_no);
output = in(ii+jj)
或者您可以使用稍微更令人满意的内置hankel
:
output = hankel(in(1:fuzzy_no), in(fuzzy_no:end))
答案 1 :(得分:0)
试试这个 -
n = numel(in);
lim1 = n-fuzzy_no
t1 = bsxfun(@times,in',ones(1,lim1)) %//'
uind = triu(ones(size(t1)),1)>0
lind = [zeros(fuzzy_no,lim1) ; tril(ones([size(t1,1)-fuzzy_no lim1]))]>0
t1(uind | lind)=[];
output = reshape(t1,fuzzy_no,n-fuzzy_no)