Matlab:根据规范从行向量创建矩阵

时间:2014-05-30 08:05:00

标签: matlab

我在 matlab 工作。我有一个行向量in和一个标量数fuzzy_no。我想创建一个大小为output的矩阵fuzzy_no x (numel(in)-fuzzy_no)。这样矩阵ith的{​​{1}} col就具有来自行向量output的{​​{1}}的元素。

换句话说,我想在不使用循环

的情况下实现以下循环
i:i+fuzzy_no-1

2 个答案:

答案 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)