2013-11-29 54 views
0

我有一個愚蠢的問題,我目前無法回答(可能太累了)。如何在數組中存儲變量?這裏是我的代碼位:Matlab陣列,矢量

for u0=xDesired(1):0.01:xDesired(2), 
    [T,Y] = ode23(@RateDE,[T],[Yminitial Yinitial],[],[u0 g k]); 
    %#Peaks 
    P1 = findpeaks(T,Y(:,1),0,-1,5,5); %Peaks for Alpha(T) 
    P2 = findpeaks(T,Y(:,2),0,-1,5,5); %Peaks for Tetha(T) 
    W = size(P2(:,2)); %Counts the number of peaks in Tetha(T) 
    W1 = size(P1(:,2)); %Counts the number of peaks in Alpha(T) 
    PAl = P1(W1-10:end,2); %Extracts the last11 elements in Alpha(T) 
    PBe = P2(W-10:end,2); %Extracts the last 11 elements in Tetha(T) 
    %#Valleys 
    v1 = findvalleys(T,Y(:,1),0,-1,5,5); %Valleys for Alpha(T) 
    v2 = findvalleys(T,Y(:,2),0,-1,5,5); %Valleys for Tetha(T) 
    Z = size(v1(:,2)); %Counts the number of valleys in Alpha(T) 
    Z1 = size(v2(:,2)); %Counts the number of valleys in Tetha(T) 
    VAl = v1(Z-10:end,2); %Extracts the last 11 elements in Alpha(T) 
    VBe = v2(Z1-10:end,2); %Extracts the last 11 elements in Tetha(T) 
    **%#Period 
    Periodalpha = mean(abs(PAl - VAl)); 
    Periodbetha = mean(abs(PBe - VBe)); 
    %#Amplitudes 
    Ampalpha = mean(P1(W1-10:end,3)); 
    Ampbetha = mean(P2(W1-10:end,3)); 
    %display(u0) 
    %display(Periodalpha) 
    %display(Ampalpha) 
end 

%plot(u0, Periodalpha); 
%plot(u0, Ampalpha); 

在一個數組我要存儲的變量是「Periodalpha/betha和Ampalpha/betha」這樣我就可以繪製U0 VS Periodalpha然後betha等。

但是,在工作空間中,我沒有爲這些變量獲取數組,我只獲取它的最後一個值。

任何提示/幫助將不勝感激! Thx

回答

0

讓我們來看看變量Periodalpha;你有檢查大小(Periodalpha)嗎?計算公式爲:

Periodalpha = mean(abs(PAl - VAl)); 

但在此之前,你必須:

PAl = P1(W1-10:end,2); %Extracts the last11 elements in Alpha(T) 

VAl = v1(Z-10:end,2); %Extracts the last 11 elements in Alpha(T) 

我不能100%肯定地告訴但現在看來,你走差異化的兩個11個元素向量,然後計算平均值,其返回單個標量值。所以你正在做這樣的事情:

mean(abs(rand(1,11) - rand(1,11))) 

ans = 

    0.3040 

這可能解釋你爲什麼看到變量Periodalpha的單值。

至少我認爲這就是發生的事情。

編輯:再看看你的代碼,我看到你正在迭代u0值,然後在每個值上計算Periodalpha(等等)。但是每次循環都不保存任何以前的值,即每次都會重置u0和Periodalpha的值。

所以只需將u0和Periodalpha值存儲在單獨的數組中。首先,初始化一對夫婦這樣的跟蹤陣列(您U0循環外):

u0Track = []; 
PeriodalphaTrack = []; 

,然後你的循環內追加新的值到跟蹤陣列:

for u0 = 
... 

    u0Track = [u0Track u0]; 
    PeriodalphaTrack = [PeriodalphaTrack Periodalpha]; 
end 

當你的循環完成然後你可以繪製(u0Track,PeriodalphaTrack)。

有意義嗎?

+0

這是對的,但現在我想知道如何將該標量存儲回數組,以便可以對u0進行繪圖。 – KannonX

+0

也許我錯過了一些東西,但我會認爲你會繪製比單個(x,y)點更多的陰謀?它可以,如果你不是,我只是想明白你在這裏有什麼。 –

+0

在u0的每次迭代中,我會得到periodalpha,periodbetha,ampalpha和ampbetha的新值。然後,我會將u0對照periodalpha,u0 vs periodbetha等......我在這裏的問題是,正如你之前提到的,我得到了一個標量,而不是我可以繪製的一個數組。 – KannonX