vector not produced missing some '.' ?

2 ビュー (過去 30 日間)
john birt
john birt 2011 年 4 月 7 日
something is wrong with this code
t=0:0.1:1;
g = (0.30/(2*(pi*t^3)^0.5))*exp((-0.30^2)/(4*t));
As the vector g never gets made, I'm sure I need to put some '.' somewhere but I really don't understand this whole '.' stuff
  1 件のコメント
Paulo Silva
Paulo Silva 2011 年 4 月 7 日
Sean answer is great for such cases, also when there's one dot missing matlab tells you what's the operation in the error message:
mtimes % before *
mdivide % before /
mpower % before ^

サインインしてコメントする。

採用された回答

Paulo Silva
Paulo Silva 2011 年 4 月 7 日
t=0:0.1:1;
g = (0.30./(2*(pi*t.^3).^0.5)).*exp((-0.30^2)./(4*t));

その他の回答 (3 件)

Sean de Wolski
Sean de Wolski 2011 年 4 月 7 日
vectorize('g = (0.30/(2*(pi*t^3)^0.5))*exp((-0.30^2)/(4*t))');
A brainless way for us lazies.
  4 件のコメント
Paulo Silva
Paulo Silva 2011 年 4 月 7 日
... ..- .--. . .-. .-.. .- --.. .. .
Sean de Wolski
Sean de Wolski 2011 年 4 月 7 日
Eval, is the king of MATLAB laziness!

サインインしてコメントする。


Matt Fig
Matt Fig 2011 年 4 月 7 日
As a general rule when dealing with operations on arrays, use a dot before every one of the three operators:
* / ^
If you do this you will be fine.
  1 件のコメント
Sean de Wolski
Sean de Wolski 2011 年 4 月 7 日
and \

サインインしてコメントする。


David Young
David Young 2011 年 4 月 7 日
If you don't understand the operators, the most straighforward thing is to use
g = (0.30 ./ (2 .* (pi .* t .^ 3) .^ 0.5)) .* exp((-0.30 .^ 2) ./ (4 .* t));
so that all the operators behave as elementwise operators (which I guess is what you want). If you understand the difference, you can omit some of the dots, but they do no harm.
It's not all that hard really: *, / and ^ carry out matrix operations (like matrix multiplication, as defined here), while .*, ./ and .^ operate point by point on the elements of the matrices.

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by