trying to plot 2d graph with y=(x+some_​thing/x+sa​me_thing)

조회 수: 6 (최근 30일)
sumeet
sumeet 2017년 9월 30일
댓글: Henry Giddens 2017년 9월 30일
I want to plot multiple 2d graphs where x varies from 0 to 1 with step size of 0.1
y=(0.9*x+0.01)/(x+0.1);
when I run this i get y as variable containing just one value .
I was expecting an array of 11 values .
Why it did not happen ?
Also , if I wrote y=(x+2)/(x+2); I want y as array of ones . How can i do that ?
Thanks.

채택된 답변

Henry Giddens
Henry Giddens 2017년 9월 30일
편집: Henry Giddens 2017년 9월 30일
You need to use the ./ command, instead of just /
y=(0.9*x+0.01)./(x+0.1)
/ by itself performs matrix division, whereas ./ performs element by element division
see help mrdivide and help rdivide for more information about the differences
  댓글 수: 3
sumeet
sumeet 2017년 9월 30일
편집: sumeet 2017년 9월 30일
One more thing , if I want to make an array whose element is (1-entry_from_corresponding_element).*log(entry_from_corresponding_element)
Then , do I have to add . somewhere else in above ?
Henry Giddens
Henry Giddens 2017년 9월 30일
No problem.
In general, if you want to do element-wise multiplication in matlab, then use the '.*' and './' notation. Both arrays should be either a single column or single row, or else you end up with an array that is nCols x nRows wide. You can of course do element wise multiplication and division on matrixes with any number of dimensions, as long as both are the same size.
If you want to do matrix multiplication and division, you should use the '*' and '/' functions without the dot. See the differences below:
[1 2; 3 4] .* [1 2; 3 4]
ans =
1 4
9 16
[1 2; 3 4] * [1 2; 3 4]
ans =
7 10
15 22
I see no reason why the notation you wrote wouldn't work
(1 - [1 2 3 4]).*log([1 2 3 4])
ans =
0 -0.6931 -2.1972 -4.1589

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Object Properties에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by