2014-10-13 3 views
1

시뮬 링크 모델의 출력을 가져 와서이 정보를 배열에 넣어 각 루프를 작성한 다음 플로팅/분석 할 수있는 스크립트가 있습니다. 내가 얻을 스크립트는 다음덧씌우 기없이 Matlab의 루프에서 배열로 출력

test1 

Outvs = 

68.0000 
68.0007 
68.0430 
68.0746 

In an assignment A(I) = B, the number of elements in B and I must be the same. 

Error in test1 (line 19) 
output(sensv0) = Outvs; 

내 스크립트는 다음과 같다 : 같은 일을 처리 할 수 ​​

%Vectors/containers to store values% 
%input = zeros(4,4); 
output = zeros(4,4); 

%INITIAL VELOCITY (v0) 
%do a sensitivity analysis for different input values 
for sensv0 = 85:88 
    %step 1: define input value to variable 
    v0 = sensv0; 
    %step 2: run simulation 
    sim('sldemo_absbrake'); 
    %step 3: look at graphs at t=0,5,10,15s for Vehicle Speed 
    Outvs = getdatasamples(vs, [2,6,11,14]); 
    %Display Outvs (troubleshooting) 
    Outvs 
    %input(sensv0) = v0; 
    output(sensv0) = Outvs; 
end 
+2

는 단일 출력 필드에 여러 개의 샘플을 넣어. 만약 출력이 길이 4의 행 (!) 벡터라면 (여러분의 사전 할당을 기반으로 생각합니다)'output (sensv0-84, :) = Outvs;를 시도해 볼 수 있습니다 Subverseing 84는 인덱스 1 4로 설정하고 전체 행을 콜론으로 선택합니다. 이것이 작동하지 않는다면'Outvs'를'output'의 일부 서브셋에 할당하는 대신 화면에 출력하십시오. 그런 다음'Outvs'가 실제로 어떻게 보이는지를 볼 수 있고 그것을 기반으로'output' 행렬의 일부에이를 적절하게 저장할 수있는 방법을 생각할 수 있습니다. – MeMyselfAndI

+0

죄송합니다. 질문에 'Outvs'모양을 포함 시켰습니다. 4 × 1입니다. 따라서 이것은'output (:, sensv0-84) = Outvs;가 작동해야 함을 의미합니다. 나는 너 자신을 알아낼 수 있다고 확신한다;) – MeMyselfAndI

답변

0

두 가지 방법.

  1. outvs의 크기가 일정한 경우, 적합한 크기의 변수를 초기화 할 수

    outvs의 크기가 변화
    var=zeros([4,4]) 
    for k=85:88 
        var(k-84, :)=outvs; 
    end 
    
  2. (굽은 중괄호)와 셀 어레이를 사용한다.

    for k=85:88 
        var{k-84}=outvs; 
    end