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

matrix dimensio must be agree

 

bart
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:38     Titel: matrix dimensio must be agree
  Antworten mit Zitat      
Hallo

möchte folgende funktion lösen

lamba1=(a/2*epsi)+sqrt((a^2/(2*epsi)^2)+(b/epsi))

nun kommt folgender fehler
Code:
Error using==> plus
Matrix dimensions must agree

ich weiß das das heißt das ich zwei verschiedenlange vektoren mit einander multipliziern will und das geht nicht. doch wie bekomme ich das nun hin??

danke für eure Hilfe
Code:
lamba1=(a/2*epsi)+sqrt((a.^2/(2*epsi).^2)+(b/epsi))
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 10:42     Titel:
  Antworten mit Zitat      
Hallo
ein Beispiel wäre jetzt nicht schlecht, besonders die Werte a ,b und epsi
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:47     Titel:
  Antworten mit Zitat      
Oh ja sorry a=1 b=2 und epsi =2

da kommt irgendwas mit 1,28 raus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 10:55     Titel:
  Antworten mit Zitat      
Hallo,

das Problem tritt wohl erst bei Vektoren auf, und so ein Beispiel bräuchte man dann auch, um dir zu helfen. Sind a, b und epsi jeweils Vektoren, oder nur einer davon?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:57     Titel:
  Antworten mit Zitat      
hier mal mein kompletter code da es mehrere a gibt die von x abhängig sind
Code:

function [erg,AW]=exakteLsg(N,a,s,b_function,epsi,f_function)
%diese errechnte die exakte Lösung
AW=[0 0];%start um den Aufwand zu zählen
beta=1;
alpha=-1;
h=(beta-alpha)/N;       %berechnung von h
x=(alpha+h):h:(beta-h); %berechnung von x
a_function=a*(x.^s);    %berechnung von a(x)
AW=AW+[2 3];            %Aufwand
x_length=length(x);     %

%Auf konstanz von f(x) b(x) testen
vb=isnumeric(b_function);
vf=isnumeric(f_function);
vq=vb+vf;

AW=AW+[0 1];
%Erstellen einer Matrix mit x zeilen und einer spalte um eine die größe der
%matrix vorher fetszulegen
f0=zeros(x_length,1);
b0=zeros(x_length,1);

%Fallunterscheidung
switch(vq)
   
   case(0)
        for i=1:x_length
            f0(i)=f_function(x(i));
            b0(i)=b_function(x(i));
        end;
    case(1)
        if (vf ==1)
            for i=1:x_length
                f0(i)=f_function(x(i));
                b0(i)=b_function;
            end;
        else
            for i=1:x_length
                f0(i)=f_function;
                b0(i)=b_function(x(i));
            end;
        end;
    otherwise
        for i=1:x_length
            f0(i)=f_function;
            b0(i)=b_function;
        end;
end;

lambda1=(a/2*epsi)+sqrt((a.^2/(2*epsi).^2)+(b/epsi))%HIer ist das Problem

A=zeros(N-1,N-1);%Null Matrix mit N-1 Zeilen und Spalten
%einsetzen der gleichungen in die diagonalen

for ze =1:N-1
for    sp=1:N-1
    if(ze == sp)
      A(ze, sp) = exp^(lambda1*x(i));
    elseif(ze==sp-1)
        A(ze,sp) =exp^(lambda2*x(i));
    end;
end;
end;
end


auf die Bemerkungen dahinter keine acht geben das ist für mich
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

die Frage ist nun, was wir damit anfangen sollen.
a und epsi sind Eingabeargumente, deren Dimensionen wir nicht kennen.
b wird auf den ersten Blick weder übergeben noch belegt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 11:11     Titel:
  Antworten mit Zitat      
Sehe gerade ein Fehler entschuldigung

b=b0
a=a_function

Code:
lambda1=(a_function/2*epsi)+sqrt((a_function.^2/(2*epsi).^2)+(b0/epsi))%HIer ist das Problem  


exakteLsg(4,1,1,@(x)2,2,@(x)x+1) das soll eingegeben werden und dafür soll er mir eine lsg für lambda ausgeben
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 11:33     Titel:
  Antworten mit Zitat      
Okay, sehe zumindest den Fehler mit der Dimension

du bekommst einen mal Spaltenvektor und einmal Zeilenvektor,
wg Summe sollen entweder Beide Spaltenvektoren sein oder Zeilenvektoren

Also transponiere einfach eines davon
Code:

b=b0'
a=a_function

lambda1=(a/2*epsi)+sqrt((a.^2/(2*epsi).^2)+(b/epsi))%HIer ist das Problem
 
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 11:39     Titel:
  Antworten mit Zitat      
Ok wie geht das aber ist das das mit " ' "
also so
Code:
lambda1=(a/2*epsi)+sqrt((a.^2/(2*epsi).^2)+(b/epsi)')

oder bin ich jetzt völlig falsch

vielen dank für die mühe
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 11:43     Titel:
  Antworten mit Zitat      
Ja das geht mit einer Hochkomma

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 11:51     Titel:
  Antworten mit Zitat      
Es klappt vielen Dank doch nun ein neus Problem ich hoffe ihr könt mir weiter helfen.So weit steht der code.
Code:
function [erg,AW]=exakteLsg(N,a,s,b_function,epsi,f_function)
%diese errechnte die exakte Lösung
AW=[0 0];%start um den Aufwand zu zählen
beta=1;
alpha=-1;
h=(beta-alpha)/N;       %berechnung von h
x=(alpha+h):h:(beta-h); %berechnung von x
a_function=a*(x.^s);    %berechnung von a(x)
AW=AW+[2 3];            %Aufwand
x_length=length(x);     %

%Auf konstanz von f(x) b(x) testen
vb=isnumeric(b_function);
vf=isnumeric(f_function);
vq=vb+vf;

AW=AW+[0 1];
%Erstellen einer Matrix mit x zeilen und einer spalte um eine die größe der
%matrix vorher fetszulegen
f0=zeros(x_length,1);
b0=zeros(x_length,1);

%Fallunterscheidung
switch(vq)
   
   case(0)
        for i=1:x_length
            f0(i)=f_function(x(i));
            b0(i)=b_function(x(i));
        end;
    case(1)
        if (vf ==1)
            for i=1:x_length
                f0(i)=f_function(x(i));
                b0(i)=b_function;
            end;
        else
            for i=1:x_length
                f0(i)=f_function;
                b0(i)=b_function(x(i));
            end;
        end;
    otherwise
        for i=1:x_length
            f0(i)=f_function;
            b0(i)=b_function;
        end;
end;

lambda1=(a_function/2*epsi)+sqrt((a_function.^2/(2*epsi).^2)+(b0/epsi)')
lambda2=(a_function/2*epsi)-sqrt((a_function.^2/(2*epsi).^2)+(b0/epsi)')

er gibt mir die lambda aus nun möchte ich
das er mir mit hilfe der formel e^lambda1*x und e^lambda2*x
eine Matrix erstellt wobei e^lambda1*x für die verschiedenen x in der ersten Spalte steht und e^lambda2*x in der zweiten Spalte.Ich habe mir es so gedacht
Code:
A=zeros(N-2,N-2);%Null Matrix mit N-1 Zeilen und Spalten
%einsetzen der gleichungen in die diagonalen

for ze =1:N-2
for    sp=1:N-2
    if(ze-1 == sp)
      A(ze, sp) = exp(lambda1*x(i))
    elseif(ze==sp-1)
        A(ze,sp) =exp(lambda2*x(i))
    end;
end;
end;

aber das geht nicht da kommt die Fehlermeldung
Code:
Subscripted assignment dimension mismatch.

woran kann das liegen.

danke ronny
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 13:00     Titel:
  Antworten mit Zitat      
Kannst du vielleicht erklären was rauskommen soll?
Aufpassen lamda ist ein 3 Stelliger Zeilenvektor!
Und du Versuch an eine Stelle in Matrix A gleich 3 Werte zu schreiben.
Bisschen viel?
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 16:20     Titel:
  Antworten mit Zitat      
Es soll eine Matrix heherauskommen:

e^lambda1*x(i) e^lambda2*x(i)
e^lambda1*x(i) e^lambda2*x(i)

für die verschiedenen x eben.

die soll nachher mit einem Vektor (c1 c2)
multipliziert werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 17:03     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist doch, dass die lambda's Vektoren sind. D.h. verschiedene x-Werte UND verschiedene lambda-Werte, und das für 2 lambda-Vektoren. Die von dir angegebene Form passt dazu nunmal nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 25.06.2010, 17:13     Titel:
  Antworten mit Zitat      
Ach so.Habt ihr dann vielleicht einen Tip für mich wie ich das anders machen kann??

gruß ronny
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.