2013-11-29 53 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