WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

x-Achse in Figure manipulieren

 

Lloyd Blankfein
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2012, 18:53     Titel: x-Achse in Figure manipulieren
  Antworten mit Zitat      
Hallo,

in der anhängenden Grafik möchte ich die x-Achsen manipulieren. Konkret möchte ich die Werte 0-300 durch einen Datums-Vektor ersetzen.

Geht das? Falls ja, wie?

Vielen Dank für eure Hilfe!
Lloyd

LAZ.fig
 Beschreibung:

Download
 Dateiname:  LAZ.fig
 Dateigröße:  27.4 KB
 Heruntergeladen:  457 mal
Private Nachricht senden Benutzer-Profile anzeigen


evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 16.10.2012, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

wäre nicht xTickLabel etwas für dich. Schau mal in der Help nach Axes Properties unter diesem Stichpunkt. Ich denke, damit kommst du ganz schnell weiter.

Viele Grüße
Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2012, 22:31     Titel:
  Antworten mit Zitat      
Hallo evil2106,

vielen Dank,
Code:
set(gca,'XTickLabel',
war genau das was ich gesucht habe.

Jetzt habe ich noch eine Frage: Mit obigem Befehl spreche ich den untersten Plot meiner Grafik an, da dieser zuletzt erstellt wurde stellt er wohl die "aktive Grafik" dar. Wie aktiviere ich die anderen Plots, um auch diese manipulieren zu können?

Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 17.10.2012, 07:23     Titel:
  Antworten mit Zitat      
Hallo,

bei der Help unter dem Stichwort subplot steht, wie du die einzelnen Achsen deiner einzelnen plots anspricht. Ich hatte damit aber bisher auch immer so meine schwierigkeiten und hab viel herumprobiert bis es klappte.

VIele Grüße
Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2012, 19:14     Titel:
  Antworten mit Zitat      
Hallo evil2106,

Code:
subplot(3,1,1,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})


oder

Code:

subplot(3,1,1)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
 


Sobald ich den Plot referenziere, löscht matlab die Objekte (Graph + Legende). Wie kann ich das verhindern?

Viele Grüße,
Llyod
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.10.2012, 20:18     Titel:
  Antworten mit Zitat      
Hallo Lloyd Blankfein,

Bitte poste den Code, der dioes macht: "Sobald ich den Plot referenziere, ..."

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2012, 12:53     Titel:
  Antworten mit Zitat      
Hallo Jan,

mit referenzieren meinte ich:

Code:


Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.10.2012, 18:18     Titel:
  Antworten mit Zitat      
Hallo Lloyd Blankfein,

Ich kann das Problem nicht reproduzieren.
Code:
subplot(3,1,1);
plot(1, 10);
...
subplot(3,1,1)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})

Bei mir wird hier unter Matlab R2009a nichts gelöscht. Deshalb kann ich keinen Verbesserungsratschlag geben. Bitte benutze den Debugger, um genaus zu lokalisieren, wovon die Daten bei Dir gelöscht werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 16:34     Titel:
  Antworten mit Zitat      
Hallo Jan,

das Problem war, dass Graph und x-Achse verschieden viele Datenpunkte besaßen. Das habe ich korrigiert. Der Plot wird jetzt nicht mehr überschrieben, aber dennoch nicht korrekt dargestellt.

Das ist meine main:

Code:

function SpecOut=mrsm_example2()%Markov Regime Switching Models in MATLAB

ts=hist_returns('GLD');
returns = ts(:,2);

indep = ones(size(returns)); % A dummy explanatory variable
k = 2; % How many regimes we expect: bull and bear
S = [1 1]; % Both the mean and the volatility differ in bulls and bears

SpecOut = MS_Regress_Fit(returns, indep, k, S);% (Some on-screen outputs are omitted here.)

xdate=ts(:,1);
subplot(3,1,1,'XTickLabel',xdate);
datetick('x','mmmyyyy');
subplot(3,1,2,'XTickLabel',xdate);
datetick('x','mmmyyyy');
subplot(3,1,3,'XTickLabel',xdate);
datetick('x','mmmyyyy');

end
 


Diese ruft folgende Funktionen auf:

Code:

function ts=hist_returns(asset, start_date, end_date)

% Set Defaults
if nargin==0
  start_date=datestr(datenum(date)-365,'ddmmyyyy');
  end_date=datestr(date,'ddmmyyyy');
  asset='GLD';
elseif nargin==1
  start_date=datestr(datenum(date)-365,'ddmmyyyy');
  end_date=datestr(date,'ddmmyyyy');    
end

stocks = hist_stock_data(start_date, end_date, asset);

r1=stocks.Date(1:size(stocks.Date,1)-1);
r2=(stocks.Close(1:size(stocks.Close,1)-1)./stocks.Close(2:size(stocks.Close,1)))-1;

ts=[datenum(r1) r2];
end
 


Code:

function stocks = hist_stock_data(start_date, end_date, varargin)
% HIST_STOCK_DATA     Obtain historical stock data
%   hist_stock_data(X,Y,'Ticker1','Ticker2',...) retrieves historical stock
%   data for the ticker symbols Ticker1, Ticker2, etc... between the dates
%   specified by X and Y.  X and Y are strings in the format ddmmyyyy,
%   where X is the beginning date and Y is the ending date.  The program
%   returns the stock data in a structure giving the Date, Open, High, Low,
%   Close, Volume, and Adjusted Close price adjusted for dividends and
%   splits.
%
%   hist_stock_data(X,Y,'tickers.txt') retrieves historical stock data
%   using the ticker symbols found in the user-defined text file.  Ticker
%   symbols must be separated by line feeds.
%
%   EXAMPLES
%       stocks = hist_stock_data('23012003','15042008','GOOG','C');
%           Returns the structure array 'stocks' that holds historical
%           stock data for Google and CitiBank for dates from January
%           23, 2003 to April 15, 2008.
%
%       stocks = hist_stock_data('12101997','18092001','tickers.txt');
%           Returns the structure arrary 'stocks' which holds historical
%           stock data for the ticker symbols listed in the text file
%           'tickers.txt' for dates from October 12, 1997 to September 18,
%           2001.  The text file must be a column of ticker symbols
%           separated by new lines.
%
%       stocks = hist_stock_data('12101997','18092001','C','frequency','w')
%           Returns historical stock data for Citibank using the date range
%           specified with a frequency of weeks.  Possible values for
%           frequency are d (daily), w (weekly), or m (monthly).  If not
%           specified, the default frequency is daily.
%
%   DATA STRUCTURE
%       INPUT           DATA STRUCTURE      FORMAT
%       X (start date)  ddmmyyyy            String
%       Y (end date)    ddmmyyyy            String
%       Ticker          NA                  String
%       ticker.txt      NA                  Text file
%
%   OUTPUT FORMAT
%       All data is output in the structure 'stocks'.  Each structure
%       element will contain the ticker name, then vectors consisting of
%       the organized data sorted by date, followed by the Open, High, Low,
%       Close, Volume, then Adjusted Close prices.
%
%   DATA FEED
%       The historical stock data is obtained using Yahoo! Finance website.
%       By using Yahoo! Finance, you agree not to redistribute the
%       information found therein.  Therefore, this program is for personal
%       use only, and any information that you obtain may not be
%       redistributed.
%
%   NOTE
%       This program uses the Matlab command urlread in a very basic form.
%       If the program gives you an error and does not retrieve the stock
%       information, it is most likely because there is a problem with the
%       urlread command.  You may have to tweak the code to let the program
%       connect to the internet and retrieve the data.

% Created by Josiah Renfree
% January 25, 2008

stocks = struct([]);        % initialize data structure

% split up beginning date into day, month, and year.  The month is
% subracted is subtracted by 1 since that is the format that Yahoo! uses
bd = start_date(1:2);       % beginning day
bm = sprintf('%02d',str2double(start_date(3:4))-1); % beginning month
by = start_date(5:8);       % beginning year

% split up ending date into day, month, and year.  The month is subracted
% by 1 since that is the format that Yahoo! uses
ed = end_date(1:2);         % ending day
em = sprintf('%02d',str2double(end_date(3:4))-1);   % ending month
ey = end_date(5:8);         % ending year

% determine if user specified frequency
temp = find(strcmp(varargin,'frequency') == 1); % search for frequency
if isempty(temp)                            % if not given
    freq = 'd';                             % default is daily
else                                        % if user supplies frequency
    freq = varargin{temp+1};                % assign to user input
    varargin(temp:temp+1) = [];             % remove from varargin
end
clear temp

% Determine if user supplied ticker symbols or a text file
if isempty(strfind(varargin{1},'.txt'))     % If individual tickers
    tickers = varargin;                     % obtain ticker symbols
else                                        % If text file supplied
    tickers = textread(varargin{1},'%s');   % obtain ticker symbols
end

h = waitbar(0, 'Please Wait...');           % create waitbar
idx = 1;                                    % idx for current stock data

% cycle through each ticker symbol and retrieve historical data
for i = 1:length(tickers)
   
    % update waitbar to display current ticker
    waitbar((i-1)/length(tickers),h,sprintf('%s %s %s%0.2f%s', ...
        'Retrieving stock data for',tickers{i},'(',(i-1)*100/length(tickers),'%)'))
       
    % download historical data using the Yahoo! Finance website
    [temp, status] = urlread(strcat('http://ichart.finance.yahoo.com/table.csv?s='...
        ,tickers{i},'&a=',bm,'&b=',bd,'&c=',by,'&d=',em,'&e=',ed,'&f=',...
        ey,'&g=',freq,'&ignore=.csv'));
   
    if status
        % organize data by using the comma delimiter
        [date, op, high, low, cl, volume, adj_close] = ...
            strread(temp(43:end),'%s%s%s%s%s%s%s','delimiter',',');

        stocks(idx).Ticker = tickers{i};        % obtain ticker symbol
        stocks(idx).Date = date;                % save date data
        stocks(idx).Open = str2double(op);      % save opening price data
        stocks(idx).High = str2double(high);    % save high price data
        stocks(idx).Low = str2double(low);      % save low price data
        stocks(idx).Close = str2double(cl);     % save closing price data
        stocks(idx).Volume = str2double(volume);      % save volume data
        stocks(idx).AdjClose = str2double(adj_close); % save adjustied close data
       
        idx = idx + 1;                          % increment stock index
    end
   
    % clear variables made in for loop for next iteration
    clear date op high low cl volume adj_close temp status
   
    % update waitbar
    waitbar(i/length(tickers),h)
end
close(h)    % close waitbar
 

Quelle: http://www.mathworks.com/matlabcentral/fileexchange/18458

Code:

% Function for estimation of a general Markov Switching regression
%
%   Input:  dep     - Dependent Variable (vector (univariate model) or matrix (multivariate) )
%           indep   - Independent variables (explanatory variables), should
%                     be cell array in the case of multivariate model (see examples).
%           k       - Number of states (integer higher or equal to 2)
%           S       - This variable controls for where to include a Markov Switching effect.
%                     See pdf file for details.
%           advOpt  - A structure with advanced options for algorithm.
%                     See pdf file for details.
%
%   Output: Spec_Output - A structure with all information regarding the
%                         model estimated from the data (see pdf for details).
%
%   Author: Marcelo Perlin (UFRGS/BR)
%   Contact:  marceloperlin@gmail.com

function [Spec_Output]=MS_Regress_Fit(dep,indep,k,S,advOpt)

% Error checking lines

checkInputs(); % checking if inputs variables are OK

% building constCoeff for the cases when it is not specified

build_constCoeff();

% checking if all fields are specified and make sense

check_constCoeff();

% checking sizes of fields in constCoeff

checkSize_constCoeff();

% Pre calculations before calling the optimizer

preCalc_MSModel();

% Initialization of optimization algorithm

warning('off');

options=optimset('fmincon');
options=optimset(options,'display','off');

dispOut=advOpt.printIter;

% Defining linear contraints in model

A=[];   % inequality constrain (not used)
b=[];   % inequality constrain (not used)

% equality constraint (each collum of Coeff.p must sum to 1)

beq=ones(k,1);  
Aeq=zeros(k,numel(param0));

for i=1:k
    idx=Coeff_Tag.p(:,i);
   
    for j=1:numel(idx)
        if idx(j)==0
            continue;
        else
            Aeq(i,idx(j))=1;
        end
    end
   
end

for i=1:k
    if all(Aeq(i,:)==0)
        Aeq(i,:)=0;    % fixing equality restrictions for when using contrained estimation in Coeff.p
        beq(i,:)=0;
    end
end

param0=param0'; % changing notation for param0

% Call to optimization function

switch advOpt.optimizer
    case 'fminsearch'
        options=optimset('fminsearch');
        options=optimset(options,'display','off');
        options=optimset(options,'MaxIter',500*numel(param0));
        options=optimset(options,'MaxFunEvals',500*numel(param0));
       
        [param]=fminsearch(@(param)MS_Regress_Lik(dep,indep_nS,indep_S,param,k,S,advOpt,dispOut),param0,options);
       
    case 'fminunc'
        options=optimset('fminunc');
        options=optimset(options,'display','off');
        [param]=fminunc(@(param)MS_Regress_Lik(dep,indep_nS,indep_S,param,k,S,advOpt,dispOut),param0,options);
       
    case 'fmincon'
        options=optimset('fmincon');
        options=optimset(options,'display','off');
        [param]=fmincon(@(param)MS_Regress_Lik(dep,indep_nS,indep_S,param,k,S,advOpt,dispOut),param0, ...
            A,b,Aeq,beq,lB,uB,[],options);
       
       
end

% Calculation of Covariance Matrix

[V]=getvarMatrix_MS_Regress(dep,indep_nS,indep_S,param,k,S,std_method,advOpt);
param_std=sqrt(diag((V)));

% Controls for covariance matrix. If found imaginary number for variance, replace with
% Inf. This will then be showed at output

param_std(isinf(param_std))=0;
param_pvalues=2*(1-tcdf(abs(param./param_std),nr-numel(param)));

if ~isreal(param_std)
    for i=1:numel(param)
        if ~isreal(param_std(i))
            param_std(i)=Inf;
        end
    end
end

typeCall='se_calculation';

[Coeff_SE]=param2spec(param_std,Coeff_Tag,constCoeff,typeCall);
[Coeff_pValues]=param2spec(param_pvalues,Coeff_Tag,constCoeff,typeCall);

% After finding param, filter it to the data to get estimated output

[sumlik,Spec_Output]=MS_Regress_Lik(dep,indep_nS,indep_S,param,k,S,advOpt,0);

% calculating smoothed probabilities

Prob_t_1=zeros(nr,k);
Prob_t_1(1,1:k)=1/k; % This is the matrix with probability of s(t)=j conditional on the information in t-1

for i=2:nr
    Prob_t_1(i,1:k)=(Spec_Output.Coeff.p*Spec_Output.filtProb(i-1,1:k)')';
end

filtProb=Spec_Output.filtProb;

P=abs(Spec_Output.Coeff.p);

smoothProb=zeros(nr,k);
smoothProb(nr,1:k)=Spec_Output.filtProb(nr,:);  % last observation for starting filter

for i=nr-1:-1:1     % work backwards in time for smoothed probs
    for j1=1:k
        for j2=1:k
            smooth_value(1,j2)=smoothProb(i+1,j2)*filtProb(i,j1)*P(j2,j1)/Prob_t_1(i+1,j2);
        end
        smoothProb(i,j1)=sum(smooth_value);
    end
end

% Calculating Expected Duration of regimes

stateDur=1./(1-diag(Spec_Output.Coeff.p));
Spec_Output.stateDur=stateDur;

% passing values to output structure

Spec_Output.smoothProb=smoothProb;
Spec_Output.nObs=size(Spec_Output.filtProb,1);
Spec_Output.nEq=nEq;
Spec_Output.Number_Parameters=numel(param);
Spec_Output.advOpt.distrib=distrib;
Spec_Output.advOpt.std_method=std_method;
Spec_Output.Coeff_SE=Coeff_SE;
Spec_Output.Coeff_pValues=Coeff_pValues;
Spec_Output.AIC=2*numel(param)-2*Spec_Output.LL;
Spec_Output.BIC=-2*Spec_Output.LL+numel(param)*log(Spec_Output.nObs*nEq);

% ploting probabilities

if advOpt.doPlots
    doPlots();
end

% Sending output to matlab's screen

disp(' ');
if advOpt.printOut
    doOutScreen()
end
 

Quelle: http://blogs.mathworks.com/pick/201.....itching-models-in-matlab/

xdate ist ein 251x1-double-vektor mit welchem ich mittels

Code:

subplot(3,1,1,'XTickLabel',xdate);
datetick('x','mmmyyyy');
subplot(3,1,2,'XTickLabel',xdate);
datetick('x','mmmyyyy');
subplot(3,1,3,'XTickLabel',xdate);
datetick('x','mmmyyyy');
 


die x-Achse überschreibe. xdate gecastet, enthält die Daten 25.10.2011- 22.10.2012 (heute - 1 Jahr). Im Plot allerdings weichen die Werte von xdate ab. Außerdem enthält der Plot 275 anstatt 251 Datenpunkte.

Was mache ich falsch??? Sad

Gruß,
Lloyd

GLD.fig
 Beschreibung:

Download
 Dateiname:  GLD.fig
 Dateigröße:  28.53 KB
 Heruntergeladen:  374 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.10.2012, 14:33     Titel:
  Antworten mit Zitat      
Hallo Lloyd Blankfein,

Die Menge an Code sprengt das, was ich für eine Antwort bereit bin durchzulesen. Ich vermute sehr, dass große Bereiche des Codes für Deine eigentliche Frage nicht relevant sind. Es ist aber sehr schwierig, den relevanten Bereich zu finden, wenn ich das Problem noch nicht richtig verstanden habe.

Aussagen wie "der Plot enthält X statt Y Datenpunkts" sind kaum nachzuvollziehen, weil ich nicht wissen kann welches "der Plot" ist und wie Du die Anzahlö der Datenpunkte bestimmt hast.

Könntest Du das Problem also noch deutlich vereinfachen und den relevanten Bereich herausarbeiten?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2012, 17:20     Titel:
  Antworten mit Zitat      
Hallo Jan,

da habe ich mich wohl undeutlich ausgedrückt. Es war nicht angedacht, dass du den gesamten Code durchliest, relevant ist dies hier:

Code:

function SpecOut=mrsm_example2()%Markov Regime Switching Models in MATLAB

ts=hist_returns('GLD');
returns = ts(:,2);

indep = ones(size(returns)); % A dummy explanatory variable
k = 2; % How many regimes we expect: bull and bear
S = [1 1]; % Both the mean and the volatility differ in bulls and bears

SpecOut = MS_Regress_Fit(returns, indep, k, S);% (Some on-screen outputs are omitted here.)

xdate=ts(:,1);
subplot(3,1,1,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');
subplot(3,1,2,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');
subplot(3,1,3,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');

end
 


Allerdings müssen die anhängenden m-files eingebunden werden, damit mrsm_example2 läuft. Ich hatte den Code direkt gepostet, sorry bzgl. des Missverständnisses.

mrsm_example2 startet die anhängenden m-files und manipuliert die Grafik (3 Plots mit identischer x-Achse) die durch MS_Regress_Fit erzeugt wird. Wenn man nun die x-Achsen der Plots untersucht (in der Grafik -> Edit -> Axes Properties) sieht man, dass der Wertebereich (X Limits) von 0 bis 300 reicht. Das wird in MS_Regress_Fit so festgelegt und ist soweit in Ordnung.
Da returns 251 Elemente besitzt, sind die Plots am Ende "leer". Das möchte ich nun nachträglich ändern. Außerdem sollten die Werte der x-Achse nach dem datecast zwischen 28/10/11 und 25/10/12 liegen. Die Plots zeigen aber etwas ganz anderes.

Viele Grüße,
Lloyd

hist_stock_data.m
 Beschreibung:

Download
 Dateiname:  hist_stock_data.m
 Dateigröße:  6.27 KB
 Heruntergeladen:  367 mal
hist_returns.m
 Beschreibung:

Download
 Dateiname:  hist_returns.m
 Dateigröße:  527 Bytes
 Heruntergeladen:  411 mal
MS_Regress_Fit.m
 Beschreibung:

Download
 Dateiname:  MS_Regress_Fit.m
 Dateigröße:  5.35 KB
 Heruntergeladen:  383 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.10.2012, 14:03     Titel:
  Antworten mit Zitat      
Hallo Lloyd,

Zitat:
Da returns 251 Elemente besitzt, sind die Plots am Ende "leer". Das möchte ich nun nachträglich ändern. Außerdem sollten die Werte der x-Achse nach dem datecast zwischen 28/10/11 und 25/10/12 liegen. Die Plots zeigen aber etwas ganz anderes.

Ich habe leider immer noch nicht verstanden, wo genau welches Problem auftritt. Welcher Befehl macht nicht das, was Du willst?
Wie möchtest Du es ändern, dass die Plots am Ende "leer" sind? Was genau ist der "datecast"? Was zeigen die Plots denn "anderes"?

Beim Durchstöbern des Codes fiel mir auf, dass man einige Schleifen vereinfachen kann, z.B.:
Code:
   for i=1:numel(param)
        if ~isreal(param_std(i))
            param_std(i)=Inf;
        end
    end

zu:
Code:
param_std(~isreal(param_std)) = Inf;

Oder
Code:
for i=1:k
    if all(Aeq(i,:)==0)
        Aeq(i,:)=0;    % fixing equality restrictions for when using contrained estimation in Coeff.p
        beq(i,:)=0;
    end
end

zu:
Code:
index = ~any(Aeq, 2);
Aeq(index, :) = 0;
beq(index, :) = 0;

Und:
Code:
for i=1:k
    idx=Coeff_Tag.p(:,i);
   
    for j=1:numel(idx)
        if idx(j)==0
            continue;
        else
            Aeq(i,idx(j))=1;
        end
    end
end

zu:
Code:
for i = 1:k
    idx = Coeff_Tag.p(:,i);
    Aeq(i, idx(idx ~= 0)) = 1;
end

Das hilft zwar gar nicht Dein Problem zu lösen, statistisch gesehene enthalten aber weniger Zeilen auch weniger potentielle Bugs.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2012, 17:47     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Tipps!

Bevor man folgenden Code ausführt:

Code:

xdate=ts(:,1);
subplot(3,1,1,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');
subplot(3,1,2,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');
subplot(3,1,3,'XTickLabel',xdate);
datetick('x','dd/mm/yy','keepticks');
 


sieht die Grafik so aus vorher.fig, danach so nachher.fig. nachher.fig sieht allerdings anders aus, als ich erwartet hätte! Mit

Code:

subplot(3,1,n,'XTickLabel',xdate);
 


überschreibe ich die Werte der x-Achse des n-ten Plots, richtig? Da xdate 251 Elemente besitzt sollten die x-Achsen nun ebenfalls 251 Elemente besitzen. Das ist aber nicht der Fall, der Wertebereich (X Limits) reicht weiterhin von 0 bis 300.

Mit datecast meinte ich

Code:
datetick('x','dd/mm/yy','keepticks');


Im Plot hätte ich nun x-Werte von 31/10/11 bis 26/10/12 erwartet, statt 00/01/00 bis 26/10/00.

Gruß,
Lloyd

nachher.fig
 Beschreibung:

Download
 Dateiname:  nachher.fig
 Dateigröße:  30.82 KB
 Heruntergeladen:  371 mal
vorher.fig
 Beschreibung:

Download
 Dateiname:  vorher.fig
 Dateigröße:  30.54 KB
 Heruntergeladen:  364 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.10.2012, 23:49     Titel:
  Antworten mit Zitat      
Hallo Lloyd,

Wenn ich Dich richtig verstehe, lässt sich Deine Frage so zusammenfassen:
Code:
plot(1:10)
set(gca, 'XTickLabel', {'1', '2', '3'});

Nun wird '1' bis '3' immer wieder als XTickLabel wiederholt. Du möchtest aber:
Code:
plot(1:10)
set(gca, 'XTickLabel', {'1', '2', '3'}, 'XTick', 1:3);

Oder vielleicht:
Code:
plot(1:10)
set(gca, 'XTickLabel', {'1', '2', '3'}, 'XTick', 1:3, 'XLim', [1, 3]);

Wenn ich dem Problem damit näher gekommen bin, wäre das ein Hinweis darauf, dass Du die Frage mit viel zu vielen Details gestellt hast.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 18:54     Titel:
  Antworten mit Zitat      
Hallo Jan,

Code:

subplot(3,1,1);
set(gca, 'XLim', [0, size(xdate,1)]);
set(gca, 'XTickLabel', datestr(xdate,'dd/mm/yy'));
subplot(3,1,2);
set(gca, 'XLim', [0, size(xdate,1)]);
set(gca, 'XTickLabel', datestr(xdate,'dd/mm/yy'));
subplot(3,1,3);
set(gca, 'XLim', [0, size(xdate,1)]);
set(gca, 'XTickLabel', datestr(xdate,'dd/mm/yy'));
 


das sieht schon besser aus. Allerdings werden jetzt auf der x-Achse die Werte 03/01/08 bis 11/08/08 angezeigt, das ist aber nur ein kleiner Teil von xdate. Ich möchte aber das der gesamte Wertebereich von xdate auf der x-Achse angezeigt wird, also 03/01/08 bis 26/10/12. Hierfür müsste ich auch die Granularität der x-Achse ändern, in etwa so: 03/01/08, 15/02/09, 01/05/10, 15/07/11, 26/10/12.

Wie mache ich das?

Viele Grüße,
Lloyd

schonbesser.fig
 Beschreibung:

Download
 Dateiname:  schonbesser.fig
 Dateigröße:  67.31 KB
 Heruntergeladen:  383 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.