2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模

B题 流行音乐发展简史

原题再现:

  随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好的音乐可能横跨若干种风格,区别甚大,需要分别对待。这就需要探讨如何区分音乐风格的问题。
  第二阶段问题: 近几十年来,流行音乐的风格经历了相当复杂的演变过程。每个时代都有其代表性的人物和风格,歌曲的成功要素也随时间不断改变。请你建立合理的数学模型,对曾经走红过的流行歌曲,通过其原唱录音或曲谱来推断其所处时代。并请你写一篇短文2,向大众简述(在某个时期内)流行歌曲的“成功要素”是如何变化的。

整体求解过程概述(摘要)

  近几十年来,中国流行音乐的风格经历了相当复杂的演变过程,每个时代都有其代表性的人物和风格,歌曲的成功要素也随着时间不断变化。不同时期的流行音乐不仅反映了不同历史时期人们的精神面貌,也用音乐这个特殊的方式记载着不同历史时期人们的日常生活和人文背景。
  我们建立了基于层次分析法的模糊评价模型,先对各时代的流行歌曲进行随机选择(各 30 首,时间有限,理论上各 100 首为宜),然后对它们的音乐标签进行分析,总结出各时代的特点。接着随机选择 10 首歌,通过分析其特点判断出它所属的年代。并通过对近几十年来音乐发展的分析,得出了歌曲成功要素的变化趋势。
  在对歌曲的年代进行判断的问题中,我们首先使用了层次分析法,把影响歌曲分类的因素分为风格,主题和情感这三个因素。将风格又分为流行、乡村、摇滚和布鲁斯这四种;将主题分为爱国、爱情、友情、亲情和理想;将情感分为喜悦、忧伤、思念和励志。我们选取百度音乐、酷狗音乐、酷我音乐、QQ 音乐及 Last.fm 等大型音乐网站,从上面免费获得音乐(所筛选的歌曲)的标签(包括风格、主题和情感三个方面)。统计得出不同的时代各个因素在总体中的比例,然后运用模糊评价法,建立因子集、评判集等,从而确定风格、主题、情感对应的权值,即这三种因素在不同年代对流行音乐的影响程度。
  为了验证模型的正确性,我们对每个年代的流行歌曲再次进行随机选取(各 10 首,时间有限,理论上 30 首为宜)。我们建立了 BP 神经网络模型,并用matlab对歌曲的风格进行频谱和波形的分析,然后从歌词中总结其主体和情感。结果,运用所建模型得到的音乐标签与权威音乐网站所给标签的一致性很高(均超过 70%)。这表明所建模型具有可行性,因此,是正确的。
  在对音乐的成功要素进行分析的过程中,我们根据之前所统计的结果,并对其建立柱状图,可以清晰地得出风格、主题、情感这三种要素随时代的变化情况,从而分析出成功要素的变化趋势。从 60 年代开始,流行音乐在风格方面从单一化慢慢发展成丰富多元化。主题上以爱国、亲情和友情为主题的流行音乐逐渐减少,表达达爱情的歌曲则明显增加。情感方面表达忧伤的歌曲的比重上升明显,而表达喜悦的歌曲则明显下降;以励志和思念为情感的歌曲则变化不大。

问题分析:

  不同时期的流行音乐不仅反映了不同历史时期人们的精神面貌,也用音乐这个特殊的方式记载着不同历史时期人们的日常生活和人文背景。
  我们研究一首歌曲能够成为一个时代的流行歌曲的原因,首先要从其流行要素来分析。所谓流行要素,即歌曲在流行过程中所必须具备的条件。毫无疑问,好的歌词在歌曲的流行要素中比之音乐是第一位的。词作者借助于艺术想象力和各种其它处理,使得艺术幻象中的空间形象得以再现。歌词创作是一种造型的艺术,词作者要通过各种想象和艺术处理,创造一种美的艺术的幻象。同时,所有的歌词又必须能够传达一个可以用音乐来谱写的思想,并且能够提供某种感情基调和联系线索,以此来激发音乐家的想象力。实际上,当今的流行歌曲已经成为体现当代社会群体文化生活质量的重要衡量标准之一,歌曲的主题和情感主要通过歌词来表现。
  歌曲的第二个重要的流行要素是音乐。当作曲家被一首好的歌词所激励并为它谱曲时,这首词才能变成一支歌。在音乐艺术的创作过程中,音乐家始终处于一种纯粹音响的天地里,大脑里所有的世界有形的影象和现实都变得模糊不清了,感觉对象变得与视觉影象关系不再那么紧密,在其音乐想象中异常充实的是具有广阔连续性的无比激情,每一种东西都能用一种曲调表现出来,并使其组合成为一部完整的作品。音乐的旋律能够反映一首歌的风格。
  我国流行音乐逐渐发展起来是在 70 年代,改革开放后,随着通俗文艺的兴起,流行歌曲在中国大陆保持着迅猛的发展态势,产生了广泛的社会影响。为了进行有针对性的研究,我们将研究对象定义在中国流行音乐范围内,并且将研究阶段分为:60 年代-70年代末、80 年代、90 年代、21 世纪-今…四个时期。
  我们将研究分为两个步骤完成,第一步总结出每个时期流行音乐的特点,第二步根据所得结论将音乐按时代分类。因此建立基于层次分析法的模糊评价模型和 BP 神经网络模型。
  1.第一部分:每个时代流行音乐的特点:可以利用逐层分析法,通过分析不同时代流行音乐的不同标签,总结出其风格特点、主题特点、情感特点这三种具有决定性因素的性质,从而归纳总结出每个时代的流行要素。然后将音乐按时代划分等级,即 60-80年代音乐、80 年代音乐、90 年代音乐、21 世纪音乐,构成评语集。利用模糊分析法,将影响因素分为两个层次,组成一级、二级因素集,再根据抽取的歌曲的数据找出相应的权重集,模糊矩阵,建立模糊评价模型,从而得出歌曲所属的年代。
  2.第二部分:将音乐按时代分类:先建立 BP 神经网络模型,找出能提取流行音乐风格的方法,在分析其主题和情感,按权重得出所在年代。

模型假设:

  (1)随机抽取的音乐具有代表性,能购反映时代的音乐特点。
  (2)音乐的高潮部分能反映它的音乐风格特征。
  (3)流行音乐所属年代的判别因素主要由风格、主题和情感三种因素决定。
  (4)流行音乐的风格特征主要由流行、乡村、摇滚、新世纪这四种因素决定;其他因素影响不大。
  (5)流行音乐的主题特征主要由理想、爱国、爱情、亲情、友情这五种因素决定,其他因素忽略不计。
  (6)流行音乐的情感特征主要由喜悦、忧伤、思念、励志这四种因素决定,其他因素忽略不计。
  (7)所选取的百度音乐、酷狗音乐、酷我音乐、QQ 音乐及 Last.fm 等大型音乐网站上给出的音乐标签具有权威性,即所给标签是正确合理的。

论文缩略图:

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

%画出频谱图和波形图
[y,Fs,bits]=wavread('1yao.wav');%读出信号,采样率和采样位数。
y=y(:,1);
sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));
title('摇滚音乐的频谱图');
xlabel('Frequency(Hz)');%频谱图
t=(0:sigLength-1)/Fs;
figure;plot(t,y);
title('摇滚音乐的波形图');%波形图
xlabel('Time(s)');
%这是提取特征值函数,返回值为各个端点之间距离的平均值和方差。
function [ FileName,mean_value,variance ] = Feature_Extract( FileName )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
[F,Fs,bits]=wavread(FileName,20*44100);%读入波形函数
time=20;%采样时间
T=1:time*Fs;%采样时间轴
Wave=F(T);
Wave=Wave/max(abs(Wave));%数据统一化处理
WLen=length(T);
winlen=2^nextpow2(Fs*20/1000);
dupwin=2^nextpow2(Fs*5/1000);
stepwin=winlen-dupwin;
E=zeros(WLen-stepwin,1);%初始化能量矩阵
for i=1:stepwin:WLen-stepwin%计算帧能量 FE
xm=Wave(i:i+stepwin);
E(i)=sum(xm.*xm);
end
E0=[E zeros(length(E),1)];
E0=setxor(E0(:,1),0);
j=1;
for i=1:length(E)%记录帧的位置
if E(i)>0
E0(j,1)=E(i);
E0(j,2)=i;
j=j+1;
end
end
Emin=min(E0(:,1));%计算帧能量的最小值
Emax=max(E0(:,1));%计算帧能量的最大值
Emean=mean(E0(:,1));
lamda=0.5;%设定静止阀值
Ttfe=Emin+lamda*(Emean-Emin);
for i=1:length(E0(:,1))%屏蔽 E0 中对帧能量小于静止阀值的值
if E0(i,1)<Ttfe
E0(i,1)=0;
end
end
FER=ones(length(E0(:,1)),2);%初始化帧能量比例矩阵
for i=1:(length(E0(:,1))-1)%计算帧能量比
if(and(E0(i,1),E0(i+1,1)))%若当前帧与后一帧都不为 0
FERa=E0(i+1,1)/E0(i,1);
FERb=E0(i,1)/E0(i+1,1);
FER(i,1)=max(FERa,FERb);
FER(i,2)=E0(i,2);
end
end
level=mean(FER(:,1));%设定高潮阀值
result0=zeros(length(FER(:,2)),1);%初始化结果矩阵
j=2;
if FER(1,1)-level>0
result(1)=FER(1,2);
end%过滤出高潮端点
for i=2:length(FER(:,2))-1
if FER(i,2)-level>0
if FER(i-1,2)-level<0
result0(j)=FER(i,2);
j=j+1;
end
end
end
result0=setxor(result0,0);%删除多余的 0 元素
result=zeros(length(result0)-1,1);
for i=1:length(result0)-1
result(i)=result0(i+1)-result(i);
end
charaction=zeros(size(result));
for i=1:length(result)-1
charaction(i)=result(i+1)-result(i);
end
result=charaction;
%特证分析
FileName;
u=mean(result);
d=var(result);
disp([FileName])
disp(['均值:' num2str(u) ' 方差:' num2str(d)]);%输出结果
mean_value=u;
variance=d;
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐校园二手书交易管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生闲置二手书在线销售

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

蓝桥杯相关算法学习(Python)

一、排序 排序算法是指将一组数据按照某种规则重新排列&#xff0c;使得数据呈现出递增或递减的顺序。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 1.冒泡排序 解释&#xff1a; 冒泡排序通过不断交换相邻两个元素的位置&#xff0c;使…

Redis从入门到精通(四)Redis实战:短信登录

文章目录 前言第4章 Redis实战&#xff1a;短信登录4.1 基于session实现短信登录4.1.1 短信登录逻辑梳理4.1.2 创建测试项目4.1.3 实现发送短信验证码功能4.1.4 实现用户登录功能4.1.5 实现登录拦截功能4.1.6 session共享问题 4.2 基于Redis实现短信登录4.2.1 Key-Value的结构设…

mysql语句学习

SQL Select语句完整的执行顺序&#xff1a; 1、from子句组装来自不同数据源的数据&#xff1b; &#xff08;先join在on&#xff09; 2、where子句基于指定的条件对记录行进行筛选&#xff1b; 3、group by子句将数据划分为多个分组&#xff1b; 4、使用聚集函数进行计算&a…

取证之内存取证工具Volatility学习

一、简介 Volatility是一款开源的内存取证分析工具&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MaC&#xff0c;Android等多类型操作系统系统的内存取证方式。该工具是由python开发的&#xff0c;目前支持python2、python3环境。 二、安装 1、下载地址 GitHub - …

搭建 Qt 开发环境

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、QT SDK 的下载和安装 1.QT SDK 的下载 二、QT SDK的安装 1、找到下载的文件并双击 2、双击之…

Gatekeep AI:文本转视频教学工具,开启智能学习新纪元

在当今的数字时代,技术的进步不断改变着我们学习和理解知识的方式。 Gatekeep AI 就是这样一款令人兴奋的工具,它专注于将数学和物理问题通过文本提示转化为生动的视频。 特点与优势: 直观的可视化:将复杂的数学和物理概念以直观的视频形式呈现。快速生成:根据用户提供的…

IT公司管理者日常工作思考

一、前言 作为IT公司的管理者,我们应该一切从实际出发,理论和实际相结合,以终为始,带领公司(组织)不断前进。当然前进包括稳重求进,稳步前进,积极扩张,厚积薄发。等等。大多数公司追求的都是稳中求进,没有稳的进都是在冒比较大的风险。积极扩张,又容易出现较大的风…

世优科技上榜2024年度《中国虚拟数字人影响力指数报告》

日前&#xff0c;第三期《中国虚拟数字人影响力指数报告》在中国网络视听大会上正式发布。本期《报告》由中国传媒大学媒体融合与传播国家重点实验室&#xff08;以下简称“国重实验室”&#xff09;、中国传媒大学数字人研究院编制&#xff0c;中国网络视听协会、人民日报智慧…

数据库加载驱动问题(java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 遇到此问题&#xff0c;首先检查IDEA外部库中是否有mysql数据库驱动。如下所示&#xff1a; 如果发现外部库中存有mysql数据库驱动&#xff0c;需要在数据库配置文件中查看是否设置有时区mysql8.0以上版本需要设…

SAD法(附python实现)和Siamese神经网络计算图像的视差图

1 视差图 视差图&#xff1a;以左视图视差图为例&#xff0c;在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标 视差图和深度图&#xff1a; z f b d z \frac{fb}{d} zdfb​ 其中 d d d 是视差&#xff0c; f f f 是焦距&#xff0c; b b…

【漏洞复现】用友NC-Cloud系统queryRuleByDeptId存在SQL注入漏洞

“ 如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的…

vue 实现的h5 页面,如何设置页面中的 title

修改页面中的title 公共修改方式在App.vue 中&#xff1a; created() {document.title "测试标题"; },单个页面修改&#xff0c;就在单个页面编写就ok

提高 API 性能的小技巧

引言 随着数字时代的到来&#xff0c;API&#xff08;应用程序接口&#xff09;已经成为连接不同服务和应用的桥梁&#xff0c;其意义远超技术工具本身。随着大数据、云服务和 5G 技术等领域的进步&#xff0c;API 的作用变得更加重要&#xff0c;它不仅促进了数字转型的发展&…

supersqli-攻防世界

题目 加个报错 1 and 11 #没报错判断为单引号字符注入 爆显位 1 order by 2#回显正常 1 order by 3#报错 说明列数是2 尝试联合查询 -1 union select 1,2# 被过滤了 return preg_match("/select|update|delete|drop|insert|where|\./i",$inject); select|update|d…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

git上传到本都仓库

摘要&#xff1a;本地初始化init仓库&#xff0c;进行pull和push&#xff1b;好处是便于利用存储设备进行git备份 git init --bare test.git 随便到一个空的目录下git clone 然后使用git上传 把git仓库删除之后再clone一次验证一下是否上传成功&#xff1a; 如果在ubantu上面没…

数据资产盘点七步法:教你为什么盘,盘什么,怎么盘

数据作为企业一种“特殊资产”&#xff0c;已被列入企业的资产负债表。只有对数据资源进行统筹规划&#xff0c;全面梳理&#xff0c;“摸清家底”&#xff0c;才能让数据更好地服务于企业的业务应用。怎样识别数据资产、有效管理和运营数据资产&#xff0c;利用现有的数据资产…

05 | Swoole 源码分析之 WebSocket 模块

首发原文链接&#xff1a;Swoole 源码分析之 WebSocket 模块 大家好&#xff0c;我是码农先森。 引言 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。 与传统的 HTTP 请求-响应模型不同&#xff0c;WebSocket 可以保持…

node res.end返回json格式数据

使用 Node.js 内置 http 模块的createServer()方法创建一个新的HTTP服务器并返回json数据&#xff0c;代码如下&#xff1a; const http require(http);const hostname 127.0.0.1; const port 3000;const data [{ name: 测试1号, index: 0 },{ name: 测试2号, index: 1 },…