2017-11-23 1 views
1

Ich habe bestimmte Daten aus einer Excel-Datei extrahiert. Es beinhaltet zwei Spalten: eine für bestimmte Perioden und eine andere für entsprechende Tagespreise. Die folgenden sind meine Codes (T1 und T2 sind Benutzereingaben.)Matlab-Codes für die Erstellung von Skalen

row_1 = find(period==t1) 
row_2 = find(period==t2) 
f_0 = period(row_1:row_2, 1) 
f_1 = price(row_1:row_2 , 1) 
y_1 = plot(handles.axes2, f_0, f_1) 

f_0. Periode (x-Achse), f_1: Preis (y-Achse)

Mein Ziel ist es, den Trend zum Ausdruck bringen Preisschwankungen durch Verwendung von Sounds. Also die Art, wie ich das gemacht habe, ist wie folgt. Schritt 1: Finden Sie den maximalen und minimalen Wert des Preises, der dem gegebenen Zeitraum entspricht. Schritt 2: Teilen Sie die Abstände zwischen diesen beiden Punkten in acht Abschnitte auf. Schritt 3: Zuordnen von acht Tonleitern (C D E F G A B C) zu jedem acht Abschnitte und spielen Sie es ab.

Auf meiner Ebene habe ich erreicht, die Min/Max-Werte des gegebenen Zeitraums zu finden. Aber von der nächsten Stufe kann ich mir keine Ideen einfallen lassen. Bitte helfen Sie mir mit Ratschlägen.

Antwort

1

Wenn ich Sie richtig verstehe, möchten Sie acht Tonleitern zu geteilten Zeitraum zuordnen, und solche Codes können helfen. Hier

%% let's play some music~ 
clc; clear; 

%% Set the Sampling frequency & time period 
fs=44100; 
t=0:1/fs:0.5; 

%% eight musical scales 
Cscale{1}=sin(2*pi*262*t); %c-do 
Cscale{2}=sin(2*pi*294*t); %c-re 
Cscale{3}=sin(2*pi*330*t); %c-mi 
Cscale{4}=sin(2*pi*349*t); %c-fa 
Cscale{5}=sin(2*pi*392*t); %c-so 
Cscale{6}=sin(2*pi*440*t); %c-la 
Cscale{7}=sin(2*pi*494*t); %c-ti 
Cscale{8}=sin(2*pi*523*t); %c-do-high 
%you could call "sound(Cscale{i},fs)" to paly each scales 


%% Divide the distances between these two points 
% the highest point must be special treated 
Min_p=0; 
Max_p=8; 
Sample_p=[0 1 2 3 4 5 6 7 8]; 
for i=1:length(Sample_p) 
    S_p=Sample_p(i); 
    if (S_p == Max_p) 
    sound(Cscale{end},fs); 
    else 
     %Find the correct music scale and play it 
     sound(Cscale{1+floor(8*(Sample_p(i)-Min_p)/(Max_p-Min_p))},fs); 
    end 
    pause(0.5) 
end 

ist das, was ich sah (Sie müssen Google-Übersetzung, weil es in Chinesisch geschrieben)

http://blog.csdn.net/weaponsun/article/details/46695255

Verwandte Themen