2017-10-06 76 views
0

我正努力将这个问题写入Matlab代码。我知道我应该使用'for'循环,但我不知道如何使用它来做到这一点。 考虑行的以下序列对于n≥1向量v(n)的:使用Matlab编写一个序列

v(1) = (1) 

v(2) = (1, 1) 

v(3) = (2, 1) 

v(4) = (1, 2, 1, 1) 

v(5) = (1, 1, 1, 2, 2, 1) 

v(6) = (3, 1, 2, 2, 1, 1) 

每一行通过读出该行的内容上面给出,因此,例如V(6)包含“三一,两个二,一个“,这给v6。写一个脚本以打印对于n V(N)= 1到N =

回答

1

一种可能的版本12.:

实施例输出
N = 6; 
v = cell(N,1); 
v{1} = 1; 
for ii = 2:N 
    v1 = v{ii-1}; 
    stop_point = find(diff(v1)); 
    if isempty(stop_point) 
     n = length(v1); 
     m = v1(1); 
     v{ii} = [n,m]; 
    else 
     n = diff([0,stop_point,length(v1)]); 
     m = v1([stop_point,end]); 
     v2 = [n;m]; 
     v{ii} = v2(:).'; 
    end 
end 

:的行向量不等:

>> v{:} 

ans = 

    1 


ans = 

    1  1 


ans = 

    2  1 


ans = 

    1  2  1  1 


ans = 

    1  1  1  2  2  1 


ans = 

    3  1  2  2  1  1 

>> 

注长度不能包含在矩阵中。存储它们的简单方法是使用单元阵列。