clc
clear
%% 记录元素在数组中出现的顺序
% 定义原始数组
original_array = [6 1 1 3 3 3];
% 创建一个大小和原始数组一样的零向量
counts = zeros(size(original_array));
% 遍历原始数组中的每个元素
for i = 1:length(original_array)
% 计算该元素在原始数组中出现的次数
counts(i) = sum(original_array(1:i) == original_array(i));
end
% 显示计算结果
newA=original_array*10+counts;
%% 生成1*40的元组
for i =1:40;
tuple{i}=i;
end
%% 扩展新数组
o_peiple_num = [1 2 2];
n = [1 2 3];
result = repelem(n, o_peiple_num);
%% 建立映射关系
% 定义两个数组
keyArray = [21 22 31];
valueArray = [4 2 6];
% 建立映射关系
mapObj = containers.Map(keyArray, valueArray);
% 测试映射关系
input = 21;
output = mapObj(input);
disp(output);
%% 员工做了什么工序
% 定义两个数组
employeeID = [1,2,3,1,2];
jobNumber = [11,21,31,12,22];
% 建立映射关系
jobMap = containers.Map('KeyType', 'double', 'ValueType', 'any');
for i = 1:length(employeeID)
id = employeeID(i);
job = jobNumber(i);
if isKey(jobMap, id)
jobs = jobMap(id);
jobs(end+1) = job;
jobMap(id) = jobs;
else
jobMap(id) = job;
end
end
% 输出每个员工的工作情况
keys = jobMap.keys;
for i = 1:length(keys)
id = keys{i};
jobs = jobMap(id);
fprintf('员工%d做了工序', id);
for j = 1:length(jobs)
fprintf('%d ', jobs(j));
end
fprintf('\n');
end
%% 保存元组到excel
% 定义元组
tuple = {[1 2],[],[5 6],[9 0]};
% 将元组转换为矩阵,每个子元素占据一行
mat = cell2mat(tuple');
% 创建 Excel 文件
filename = 'mytuple.xlsx';
if exist(filename, 'file') == 2
delete(filename);
end
% 保存矩阵到 Excel 文件中的一个工作表中
xlswrite(filename, mat, 'Sheet1');
%% 保存元组到excel,元素长度不一致的情况
% 定义元组
tuple = {[1 2],[],[5 6],[9]};
% 将元组转换为表格
T = table(tuple.');
% 将表格写入 Excel 文件
writetable(T, 'tuple.xlsx', 'Sheet', 1);
%% 元组变成数组,末尾添加0
tuple = {[1 2],[],[5 6],[9]};
% 计算最大的元素长度
max_length = max(cellfun(@numel, tuple));
% 将每个元素转换为一行,不足部分用 0 填充
tuple_mat = cell2mat(cellfun(@(x) [x zeros(1, max_length - numel(x))], tuple, 'UniformOutput', false)');
%% 判断工作是否做完
% 定义矩阵 A 和 B
A = [11,12,13;21,22,23];
B = [11,12,13,0;21,11,22,23];
while true
% 检查 B 的第一列,找到可以做的工序
available_ops = B(:,1); % 取出 B 的第一列
available_ops = available_ops(~ismember(available_ops, A(:,1))); % 去除 A 中已经完成的工序
if isempty(available_ops)
disp('所有工作已完成!');
break;
end
% 找到可以做的工序后,从 A 中删除该工序
A = A(~ismember(A(:,1), available_ops), :);
end
% 判断 A 是否为空矩阵
if isempty(A)
disp('矩阵 A 已清空!');
end
%% 检查元素只存在第一列
% 创建一个矩阵
A = [1 2 3,1; 6 5 6,1; 7 8 9,1];
% 要查找的元素
x = 6;
% 使用 find 函数查找元素所在的行和列索引
[row_idx, col_idx] = find(A == x);
% 使用 unique 函数获取列索引的唯一值
unique_col_idx = unique(col_idx);
% 使用矩阵索引或列名来输出列名
col_names = [1, 2,3,4];
sum=sum(col_names(unique_col_idx));
if sum==1
disp('只存在第一列');
elseif sum==0
disp('不存在矩阵中');
else
disp('不只存在第一列');
end
Matlab的高级用法和实用技巧
最新推荐文章于 2023-12-31 01:10:09 发布