Difference between revisions of "Упрaжнение 2. Matlab"

From Ilianko
Line 174: Line 174:
  
 
     1.7321
 
     1.7321
 +
</pre></code>
 +
 +
== Смяна на показваната точност ==
 +
<code><pre>
 +
>>format long
 +
</pre></code>
 +
== Предаване на данни ==
 +
чрез обявяването им като глобални
 +
<code><pre>
 +
function d = ab_g(A,B)
 +
% Prograма за намиране разстянието между две триизмерни точки
 +
% Входни аргументи
 +
% Вектор А = [a b c] с координатите на т.А
 +
% Вектор B = [a b c] с координатите на т.B
 +
global p;
 +
d = sqrt(  (A(1)-B(1))^2 + (A(2)-B(2))^2 + (A(3)-B(3))^2 );
 +
a = d/p
 +
%
 +
end
 
</pre></code>
 
</pre></code>
  
 
[[Category:Matlab]]
 
[[Category:Matlab]]

Revision as of 13:32, 14 April 2011

Help

>>help

>>help symbolic toolbox

>>demo


Индексиране на вектори

 v = [1 2 3 Inf 0 2 NaN]

Inf <=> bezkrajnost NaN <=> nesyshtestwuwa

 функция isfinite() - връща само крайните стойности
 v(isfinite(v) ) = []

v(v>4 | v<1) = []

вектор с равномерно разпределение

 a + (b-a)*rand(1,7)


Хистограма

Хистограма на нормално разпределение

>> y = round(100*randn(1,10000)); >> hist(y,20)

Двумерна графика

Цвят на линията, ..., включване на грид >> hist(y,20), grid on

Много прозорци plot в един

subplot(3,2,1)

m = 3 -> редове n = 2 -> koloni a = 1 -> ацтивен

plot

Въвеждане на специални символи

Синтаксис от Latex

Скриптови файлове

поредица от команди записани във файл


Разделяме прозореца 4 части

>> subplot(2,2,1)

затихваща синусоида с различен коеф. на затихваме

y = e^(-k*x.sin(x))

>>k = [0.1, 0.2, 0.3, 0.4] >>x = 0:pi/100:6*pi

Създаване на потребителски функции. Два входящи елемента x,k

Създаваме нов m файл!

  • Името на файла трябва да отговаря на името на функцията
  • оператор точка за по елементно умножение

for - при незадаване на стъпка, тя е единица

Управляващи оператори на plot(x,y, 'r:')

function y = f( x,k ) 

%UNTITLED Summary of this function goes here
%   Detailed explanation goes here

y = 2.^( (-k*x).*sin(x) );

end
>>for i =1:4
subplot(2,2,i);
plot(x, f(x,k(i)), 'r' );
end

>>ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)', [-6*pi 6*pi])

Създаване на директория

Конфигуриране на собствена директория и даване на пътя

file -> set path ...

тестване: >>path

Достъп до променливи

Локални Глобални променливи

Workspace - обхваща цялото пространство

Всяка функция си има собствено пространство

f(x,y) с аргументите на функцията се предават променливи от основния воркспаце към функцията

>> global x,y; прави глобални променливите, трябва да се извика и във функцията;


Пример скрипт файл

Създайте файл със следните редове

A = input( 'A = [x1 y1 z1] , wekto s tri  koordinati:')
B = input( 'B = [x2 y2 z2] , wekto s tri  koordinati:')

d = sqrt(  (A(1)-B(1))^2 + (A(2)-B(2))^2 + (A(3)-B(3))^2 );

disp(['sumata e ', num2str(d)])

Изпълнете в работаната среда

>> ab
A = [x1 y1 z1] , wekto s tri  koordinati:[0 0 0]

A =

     0     0     0

B = [x2 y2 z2] , wekto s tri  koordinati:[1 1 1]

B =

     1     1     1

sumata e 1.7321

Извикване на коментар на функция от команден ред

function d = ab_f(A,B)
% Prograма за намиране разстянието между две триизмерни точки
% Входни аргументи 
% Вектор А = [a b c] с координатите на т.А
% Вектор B = [a b c] с координатите на т.B
d = sqrt(  (A(1)-B(1))^2 + (A(2)-B(2))^2 + (A(3)-B(3))^2 );
%
end

Иzwevdaне не komentaрите до първия изпълним ред

>>help ab_f
  Prograма за намиране разстянието между две триизмерни точки
  Входни аргументи 
  Вектор А = [a b c] с координатите на т.А
  Вектор B = [a b c] с координатите на т.B
ab_f([0 0 0], [1 1 1])

ans =

    1.7321

Смяна на показваната точност

>>format long 

Предаване на данни

чрез обявяването им като глобални

function d = ab_g(A,B)
% Prograма за намиране разстянието между две триизмерни точки
% Входни аргументи 
% Вектор А = [a b c] с координатите на т.А
% Вектор B = [a b c] с координатите на т.B
global p;
d = sqrt(  (A(1)-B(1))^2 + (A(2)-B(2))^2 + (A(3)-B(3))^2 );
a = d/p
%
end