matlab 코딩에 관련된 것인데요 급해요 제발 ㅠㅠ

soniya의 이미지

안녕하세요...

저는 대학교에 다니는 공학도 입니다..

matlab을 처음 배우는데요... 프로젝트 발표를 하는데..

멧렙으로 음악연주하기를 하고싶어서 소스를 구했는데요..

해석이 안됩니다. 다른사람들도 이해할수 있게 해석을 해야 하는데.

제가 만든 코딩이 아니라서 어떻게 설명해야 되고

뭔지도 잘 모르겟습니다.

그래서 해석좀 부탁드립ㄴ디ㅏ.

2. playtone

function x = playtune(str,cf,cb)
% Play musical tune.
% [x] = playtune(str,[cf],[cb])
%
% Notation:
% [CDEFGAB] keys, 5 full octaves
% [12345678] key/rest duration,
% with the default [1] semiquaver, [2] quaver, [4] crochet and [8] minim
% [#] sharp / [b] flat / [.] rest / [^] raise octave / [_] lower octave
%
% Examples:
% C major -- playtune('^2CDEFGAB^C_BAGFEDC');
% F major -- playtune('^2FGABb^CDEFEDC_BbAGF');
% B minor (harmonic) -- playtune('^2B^C#DEF#GA#BA#GF#EDC#_B');
% F# minor (melodic) -- playtune('^2F#G#AB^C#D#E#F#EDC#_BAG#F#');
% Doe-a-deer -- playtune('^^6C2D6E2C4EC8E6D2EFFED8F.');
%
% Advanced features:
% CF is a (N,2) matrix where the first column contains the frequency and
% the second column the corresponding scaling coefficient. The simplest
% choice of CF would be cf = [1 1] which generates a pure sine wave. The
% default CF is cf = [1 1; 1.001 0.33; 1.002 0.2; 0.999 0.33; 0.998 0.2]
% which generates a tone resembling the flute.
% CB is a (1,9) vector containing the duration of that particular symbol (1-9).
%
% v2.0, Alan Tan (weechiat@gmail.com)

if nargin < 2 | isempty(cf), cf = [1 1; 1.001 0.33; 1.002 0.2; 0.999 0.33; 0.998 0.2]; end
if nargin < 3 | isempty(cb), cb = [1:9]; end

% Set constants.
Fc = 65.4064;
Fs = 2^13;
Ts = 1/Fs;
Td = 0.1;
c1 = 2*pi*Fc;
c2 = 2.^([0:60]/12);

% Convert string to score.
d = -ones(1,length(str));
d(find(str == 'C')) = 0;
d(find(str == 'D')) = 2;
d(find(str == 'E')) = 4;
d(find(str == 'F')) = 5;
d(find(str == 'G')) = 7;
d(find(str == 'A')) = 9;
d(find(str == 'B')) = 11;
d(find(str == '^')) = 0;
d(find(str == '_')) = 0;
d(find(str == '.')) = 0;
u1 = find(str == 'b');
d(u1-1) = d(u1-1)-1;
u2 = find(str == '#');
d(u2-1) = d(u2-1)+1;
str([u1,u2]) = [];
d([u1,u2]) = [];

% Construct vector.
x = [];
oc = 1;
Tu = Td;
t = [Ts:Ts:Tu];
L = length(t);
th = zeros(size(cf,1),1);
for k = 1:length(str)
if d(k) == -1
Tu = cb(str(k)-48)*Td;
t = [Ts:Ts:Tu];
L = length(t);
else
switch str(k),
case '^', oc = oc+12;
case '_', oc = oc-12;
case '.', x(end+L) = 0;
otherwise
wt = c1*c2(oc+d(k))*t;
x(end+(1:L)) = transpose(cf(:,2))*sin(cf(:,1)*wt+th(:,ones(1,L)));
th = rem(cf(:,1)*wt(end)+th,2*pi);
end
end
end

% Set output.
if ~nargout
soundsc(x,Fs);
clear x;
end

--------------------------------------------------------------

이것인데요...

어떻게 만들어 졋는지 너무 궁금합니다.

cf나 cb soundsc u 값등이 어디서 나왔으며 어떻게 어떻게 만들고 해석해서 설명해야 할지 알고싶습니다..

이것을 다른 사람한테 설명해야 하는데..

도와주세요..

전반적인해석좀 부탁 드립니다

전반 적인 해석이요!.... ㅠㅠ 감사합니다.

체스맨의 이미지

학교 수업이시라면, 아마도 몇 일만에 매트랩을 배워서 무엇을 하라고는 안했을 것 같아서, 글쓰신 분께서 지금처럼 급한 상황에 몰리셨다면, 주어진 일정 기간 동안 열심히 안했다는 얘기밖에 안됩니다.

일정 정도 알기 위해 노력을 해보고, 의문이 남는 것을 질문을 해야 답변하기도 쉬울 것입니다.

지금 올리신 매트랩 코드는 쉬운 수준에 해당하고, 게다가 학과 공부이니 스스로 노력하셔서 결과를 얻어내시고, 그래도 안되시면 재수강하시는 게 옳은 방향인 것 같습니다.

Orion Project : http://orionids.org

soniya의 이미지

말씀 말씀 입니다만.. 학교에서 배우는 멧랩은 지극히 이과적이고 수학적인 문제를 해석하고 코딩하는데에만 배웁니다.. 라플라스 가우스 일리미네이션. 시뮬링크 등등.

정해진 수업 커리큘럼에 없는 함수나 코드해석을 하는것이 수업을 열씸히 들었어도 쉽지가 않네요;; 제가 이해력이 부족한걸까요...

음악적이다 보니 음악적 지식이 부족한 이과생으로써도 상당히 어렵습니다.

이점이해해 주셧으면 하고요.. 저는 진짜 조언이아니라 해석이 필요합니다.

ㅎㅇ

체스맨의 이미지

지금 말씀하신 걸로 봐서는, 매트랩 소스 문법은 알고 계시는 거네요. 그럼 저 안에서 이해안되는 것은 단지 domain specific 한 수식 뿐이겠죠?

그럼 애초에 매트랩 소스를 통째로 올리실 필요가 있었을까요? 이해 안되는 수식만 빼내서 질문하실 수 있었을 것 같은데요. 답변을 하는 사람들 입장에서는 뭐가 궁금한 건지 알 수 없는 질문에 답을 한다는 자체가 이상한 일입니다.

어떤 수업인지는 모르겠지만, 개인이 느끼기에 밑도 끝도 없는 수식이 갑자기 과제로 나온다는 게 솔직히 잘 이해는 되지 않습니다만, 아무튼 수업을 제대로 듣고 공부했으면 할 수 있을만한 걸 교수님께서 과제로 내시지 않았을까 싶습니다만...

Orion Project : http://orionids.org

winner의 이미지

그렇다면 음대생들은 matlab 쓰느라고 골치아플 겁니다.
그렇지 않다면 다른 학생들도 쉽지는 않을 거구요.

뭔가 안타깝기는 한데... 이곳에서 숙제를 그것도 급하다고 하면
좋은 반응 얻기 어렵습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.