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

Broadcasting Fehler

 

Aesthetic99
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2014, 10:20     Titel: Broadcasting Fehler
  Antworten mit Zitat      
Hey Leute, ich glaub ich steh irgenddwie auf dem Schlauch und komm nicht vowärts. Bei mir hat sich irgendwo ein Broadcast Fehler mit den Dimensionen von meinen Matrizen eingeschlichen aber igendwie seh ich ihn nicht :?
Kann mir jemand weiterhelfen?

Code:

sat.M   = 5;
sat.r   = 2e7;
w_az = 1e-4 * randn(1, 5);
w_el = 1e-4 * randn(1, 5);
sat.az = [0, pi/2, pi, 3/2*pi, 0] + w_az(ones(L, 1), :) .* t;
sat.el = [0.5 * pi, 0.25 * pi, 0.35 * pi, 0.2 * pi, 0.3 * pi] + w_el(ones(L, 1), :) .* t;
sat.pos = zeros(sat.M, sat.M, L);
for k=1:L
sat.pos(:, :, k) = sat.r * [cos(sat.az(k)) .* cos(sat.el(k));
sin(sat.az(k)) .* cos(sat.el(k)); sin(sat.el(k))];
end
 


Schonmal Danke im Vorraus :)
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

was meinst du mit "Broadcast(ing) Fehler"?
Wie sind L und t definiert?

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2014, 10:33     Titel:
  Antworten mit Zitat      
Hier ist die Fehlerausgabe:
warning: product: automatic broadcasting operation applied
warning: operator +: automatic broadcasting operation applied
warning: product: automatic broadcasting operation applied
warning: operator +: automatic broadcasting operation applied
error: makeTestbed: A(I,J,...) = X: dimensions mismatch
error: called from:

Und hier die Definition der Parameter:

Code:
N = 2000;
T = 1;
t = (0:T:N)';
L = length(t);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

angesichts der Fehlermeldung frage ich mich: nutzt du wirklich MATLAB?

Ich bekomme die Meldung
Zitat:
Error using .*
Matrix dimensions must agree.
Error in somecode (line 10)
sat.az = [0, pi/2, pi, 3/2*pi, 0] + w_az(ones(L, 1), :) .* t;


Das liegt an
Code:
>> size(w_az(ones(L, 1), :))
ans =
        2001           5
>> size(t)
ans =
        2001           1


Falls du spaltenweise mit t multiplizieren willst, kannst du bsxfun verwenden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2014, 11:06     Titel:
  Antworten mit Zitat      
Ok danke dir. Ne ich hab gerade Octave, bin an meinem Heimrechner.
Habs jetzt so:
Code:
w_az = 1e-4 * randn(1, 5);
w_el = 1e-4 * randn(1, 5);
sat.az = [0, pi/2, pi, 3/2*pi, 0] + bsxfun(@plus,w_az(ones(L, 1), 1),t);
sat.el = [0.5 * pi, 0.25 * pi, 0.35 * pi, 0.2 * pi, 0.3 * pi] + bsxfun(@plus,w_az(ones(L, 1), 1),t);
sat.pos = zeros(sat.M, sat.M, L);
for k=1:L
sat.pos(:, :, k) = sat.r * [cos(sat.az(k)) .* cos(sat.el(k));
sin(sat.az(k)) .* cos(sat.el(k)); sin(sat.el(k))];
end


Spuckt aber immernoch den gleichen Fehler aus und zwar in der sat.pos(:,:,k) Zeile.

Gruß,
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ne ich hab gerade Octave, bin an meinem Heimrechner.

Dann bitte zukünftig ins Octave-Forum.

Wenn multipliziert werden soll, musst du @times verwenden.

Zitat:
Spuckt aber immernoch den gleichen Fehler aus und zwar in der sat.pos(:,:,k) Zeile.

Ich bekomme schon vorher einen Fehler, weil bei der Addition von
[0, pi/2, pi, 3/2*pi, 0]
noch dasselbe Problem vorliegt.

Ich würde folgendes vorschlagen:
Code:
sat.az = bsxfun(@plus, [0, pi/2, pi, 3/2*pi, 0], bsxfun(@times,w_az(ones(L, 1), 1),t));
sat.el = bsxfun(@plus, [0.5 * pi, 0.25 * pi, 0.35 * pi, 0.2 * pi, 0.3 * pi], bsxfun(@times,w_az(ones(L, 1), 1),t));


In der von dir genannten Zeile ist dann das Problem, dass du einer 5x5-Matrix einen 3x1-Vektor zuweisen willst, was eben nicht geht. Mit dem Debugger solltest du das aber auch selbst rausfinden können.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2014, 12:14     Titel:
  Antworten mit Zitat      
Ok Danke für die Hilfe.
Hab das Problem wie folgt gelöst:
Code:
w_az = 1e-4 * randn(1, 5);
w_el = 1e-4 * randn(1, 5);

sat.az = bsxfun(@plus, [0, pi/2, pi, 3/2*pi, 0], bsxfun(@times,w_az(ones(L, 1), 1),t));
sat.el = bsxfun(@plus, [0.5 * pi, 0.25 * pi, 0.35 * pi, 0.2 * pi, 0.3 * pi], bsxfun(@times,w_az(ones(L, 1), 1),t));
sat.pos = zeros(3, sat.M, L);
for k=1:L
sat.pos(:,:,k) = sat.r * [cos(sat.az(k,:)) .* cos(sat.el(k,:)); sin(sat.az(k,:)) .* cos(sat.el(k,:)); sin(sat.el(k,:))];
end


Jetzt wird kein Fehler mehr ausgegeben.
Liebe Grüße, Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.