IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Matlab: конвертация матрицы в радианах в матрицу градусов (http://www.imho.ws/showthread.php?t=146570)

DJLOVE 10.11.2011 20:55

Matlab: конвертация матрицы в радианах в матрицу градусов
 
Салют,

наконец-то я начал свое знакомство с мат. программированием и с программой Matlab .

На данный момент ломаю голову над тем как конвертировать матрицу данная в radians в матрицу degrees.

Вот код моей простенькой программки, цель которой принять матрицу 4X3 , где каждая цифра символизирует сторону треугольника, подсчитать при помощи теоремы косинусов угол находящийся напротив стороны и в относительном порядке создать матрицу углов (находящихся напротив стороны) в градусах.


Код:

clc
A=input('enter matrix 4*3 while each line represent triangle sides:\n')
a=A(:,1);
b=A(:,2);
c=A(:,3);
d=acos((b.^2+c.^2-a.^2)./(2*(b.*c)));
%d=rad2deg(d);
e=acos((a.^2+c.^2-b.^2)./(2*(a.*c)));
%e=rad2deg(e);
f=acos((a.^2+b.^2-c.^2)./(2*(a.*b)));
%f=rad2deg(f);
B(:,1)=d;
B(:,2)=e;
B(:,3)=f;
disp('The angles for the entered triangles are:')
disp(B)

Пока что я знаком с одной командой для конвертации - rad2deg ,
правильно ли я понимаю что она не может принять вектор в rad и изменить его в degrees?
Намекните ка , как быть :confused:

Borland 10.11.2011 21:27

Цитата:

Сообщение от DJLOVE (Сообщение 1753475)
Намекните ка , как быть

Через радианы - обязательно?
acosd() :gigi:
А если очень надо radtodeg() - просто меняешь все
Цитата:

d=acos((b.^2+c.^2-a.^2)./(2*(b.*c)));
на
Цитата:

d=radtodeg(acos((b.^2+c.^2-a.^2)./(2*(b.*c))));

DJLOVE 10.11.2011 21:37

мой арсенал команд слишком мал , acosd() не проходил :biggrin: и к моему глубокому огорчению это означает что ею нельзя пользоваться в этом задании. *) так что обязательно в радианах.
так же , нельзя использовать loops и обращаться по отдельности к каждой цифре в матрице

d=rad2deg(acos((b.^2+c.^2-a.^2)./(2*(b.*c))));

это как раз пробовал , выдает ошибку (см.ниже) , ну я и сделал вывод что команда не принимает на обработку такого рода переменную

Цитата:

??? Undefined function or method 'radtodeg' for
input arguments of type 'double'.

Borland 10.11.2011 23:02

fromRadians(degrees,...), насколь я понимаю, конвертирует группу углов из радианов в градусы.
Точно так же, как и toDegrees(radians,...)
Правда, их наверное тоже низзя использовать. :gigi:
Цитата:

Сообщение от DJLOVE (Сообщение 1753479)
Undefined function or method 'radtodeg' for
input arguments of type 'double'.

Походу требуется аргумент типа single?.. :confused:
single() принимает любой числовой аргумент и возвращает single.

Цитата:

Сообщение от DJLOVE (Сообщение 1753479)
не проходил и ... это означает что ею нельзя пользоваться

Странно... Обычно при обучении использование справочников по командам не возбраняется...

Цитата:

Сообщение от DJLOVE (Сообщение 1753475)
она не может принять вектор в rad и изменить его в degrees?

Она даже на double плюётся, что уж тут о сложных типах говорить...
Offtop:
В своё время (лет так 14 назад) пытался научиться пользоваться этой программой. Раза 3 запустил - и забыл как страшный сон. В том же C++ с полпинка можно "на коленке" приспособить практически любую функцию к практически любым данным (в пределах здравого смысла, конечно), что и делается. А в плане "чиста пащетать" мне и FORTRAN тогда было куда больше чем достаточно...

Borland 10.11.2011 23:17

Ещё ковырнул мануал.
arrayfun(radtodeg,...) :gigi:

DJLOVE 12.11.2011 19:54

в конце использую наверно acosd() , пусть докажут что это не правильно :)

Borland 12.11.2011 21:12

Мне только что пришло в голову, что радианы в градусы влёгкую переводятся простым умножениемна 180 и делением на число π. :biggrin:
В матлабе есть спец. функция pi для вычисления значения π.


Часовой пояс GMT +4, время: 11:37.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.