华数杯第一题代码

%问题一 寻找 BS 并制作直方图
clc,clear;
file = dir('C:\Users\ASUS\Desktop\2024 年第五届“华数杯”全国大学生数学建模竞赛赛题\2024
年第五届“华数杯”全国大学生数学建模竞赛赛题\C 题\附件\*.csv');%读取所有此文件夹下的 txt 文件
*c*代表这类型
subfile_Num=length(file); %读取文件个数
FileNames = {file.name}'; %读取 file 中所有文件 形成元胞数组
n = size(FileNames,1); % CSV 文件的数量
for i = 1:n 
 name = FileNames{i};
 a{i}=readtable("C:\Users\ASUS\Desktop\2024 年第五届“华数杯”全国大学生数学
建模竞赛赛题\2024 年第五届“华数杯”全国大学生数学建模竞赛赛题\C 题\附件\" +
(name),'VariableNamingRule','preserve') % 导入数据
 a{i}.("评分") = string(a{i}.("评分"));
 a{i}.("评分") = double(a{i}.("评分"));
 a{i}.("建议季节") = string(a{i}.("建议季节"));
 a{i}.("小贴士") = string( a{i}.("小贴士"));
 a{i}.("地址") = string(a{i}.("地址"));
 a{i}.("名字") = string(a{i}.("名字"));
 a{i}.("链接") = string(a{i}.("链接"));
 a{i}.("开放时间") = string(a{i}.("开放时间"));
 a{i}.("图片链接") = string(a{i}.("图片链接"));
 a{i}.("介绍") = string(a{i}.("介绍"));
 a{i}.("建议游玩时间") = string(a{i}.("建议游玩时间"));
 a{i}.("门票") = string(a{i}.("门票"));
 a{i}.("名字") = string(a{i}.("名字"));
 if i == 1
 joinedtable = a{i};
 else joinedtable = vertcat(a{i}, joinedtable);
 end
end
% 导出为 Excel 文件,如果需要特定的工作簿名称,可以指定 sheetName
% writetable(joinedtable, 'joinedtable.xlsx');
% 利用 excel 删除名字和评分都相同的数据
data = 
readtable("C:\Users\ASUS\Desktop\joinedtable.xlsx",'VariableNamingRule','preserve')
%data 是删除了名字与评分都重复的数据
data1 = 
readtable("C:\Users\ASUS\Desktop\hebing.xlsx",'Sheet',1,'VariableNamingRule','preser
ve')
%data1 是删除了总和中城市和名字都重复的数据
% 天护陀罗尼经幢 Tianhu Dharani Building 删除了特殊字符
1
city_name = unique(data1.("Source.Name"))
for i= 1:352
 city_name{i,1};
 data1.("评分") = double(data1.("评分"));
m3= find(contains(data1.("Source.Name"),city_name{i,1}));
n3 = max(data1.("评分")(m3));warning off;
data1.("评分") = string(data1.("评分"));
pingfen = data1.("评分")(m3);
m4 = strcmp(pingfen , string(n3)); % 返回 {[1], [], []}
m5= find(m4 ==1);
city_name{i,2} = string(n3);
city_name{i,3} = data1.("名字") (m5);
city_name{i,4} = data1.("门票")(m5);
city_name{i,5} = data1.("建议游玩时间") (m5);
end
clear("city")
n1 = find(data.("评分") ==5)
bsspot = data.("名字")(n1,1);
bsspot = unique(bsspot)
for i= 1:2392
m = strcmp(data1.("名字"),bsspot{i});
n2 = max(size(unique(data1.("Source.Name")(m))));
city(i,1:n2) = unique(data1.("Source.Name")(m));
end
city_array = reshape(city,[],1)
city_array = city_array(~cellfun('isempty', city_array));
final = tabulate(city_array )
final = cell2table(final)
final.final1 = string(final.final1)
final.final1 = cellstr(final.final1)
bar(table2array(final(:,1)),table2array(final(:,2)))
final1 = string(final.final1)
% 计算数据的索引并排序
[sortedData, sortOrder] = sort(table2array(final(:,2)), 'descend');
% 创建条形图
figure;
bar(sortedData);
final1(sortOrder)
% 根据排序后的索引调整 X 轴的标签
set(gca, 'xtick', 1:length(final1), 'xticklabel',final1(sortOrder));
2
set(gca,'FontName', '黑体','FontSize',5)
set(gca,'XTickLabelRotation',46);%46 是字体的旋转角度
% 添加标题和轴标签
title('Sorted Bar Chart by City');
xlabel('City');
ylabel('Value');
a = [final1(sortOrder),sortedData]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值