MATLAB用户指南:从R语言入门

需积分: 50 17 下载量 9 浏览量 更新于2024-07-31 收藏 336KB PDF 举报
"R for Matlab用户指南" 这篇文档是由David Hiebeler撰写的,旨在帮助熟悉Matlab的用户过渡到使用R语言。Hiebeler在2007年春季学期教授建模与仿真课程时,为了适应学生对R语言的需求,开始编写这份参考手册。课程涉及人口和流行病学模型,包括确定性和随机模型,以及连续和离散时间的模型,还有空间模型。起初,课程基于Matlab,但一些生物研究生由于在统计课程中学习过R,希望在Hiebeler的课上也能使用R,他便同意了,并在同事Bill Halteman的帮助下快速学习R。 文档的核心是记录了Hiebeler在教学过程中学到的R语言操作,以便日后查阅和教学。每次他在R中实现课程中的某个功能,都会将其添加到参考指南中,这其中包括了大量搜索简洁方法的时间。因此,这份指南对于从Matlab转用R的用户来说,是一个宝贵的资源,它涵盖了如何在R中执行类似于Matlab的任务,比如数值计算、数据处理、建模和可视化等。 在R语言中,用户可以找到类似Matlab的矩阵运算功能,如向量和矩阵的创建、操作和计算。R提供了丰富的统计分析包,这对于进行数据探索和建模特别有用,而这是Matlab可能需要额外模块才能完成的。此外,R有强大的绘图能力,能够制作出高质量的统计图形,这在Matlab中也需要额外的编程工作。 转换到R的一个显著优势是其开源性质,这意味着有大量的社区支持和不断更新的包,这些包可以扩展R的功能,使其能够处理各种各样的任务,从机器学习到地理信息系统(GIS)。R的语法虽然与Matlab有所不同,但一旦熟悉,就能发现R的灵活性和效率。 “R for Matlab users”是一个宝贵的教学资源,它帮助用户理解和应用R语言来解决在Matlab中习惯处理的问题。通过这个指南,用户可以逐步了解R的基本结构和命令,从而在数据分析和建模领域实现平滑过渡。

将以下代码转化为matlab代码表示:import xlrd import sympy import numpy as np from scipy import linalg #%% queue = [ 0, 29, 17, 2, 1, 20, 19, 26, 18, 25, 14, 6, 11, 7, 15, 9, 8, 12, 27, 16, 10, 13, 5, 4, 3, 22, 28, 24, 23, 21, 0] def read_data_model(): data = xlrd.open_workbook("/Users/lzs/Downloads/2020szcupc/data/C2.xlsx") table = data.sheet_by_name("Sheet1") rowNum = table.nrows colNum = table.ncols consumes = [] for i in range(1, rowNum): # 忽略DC的消耗 if i == 1: pass else: consumes.append(0 if table.cell_value(i, 3) == '/' else table.cell_value(i, 3)) return consumes #%% 获得矩阵A def get_A_matrix(data): A = np.ones([29,29], dtype = float) diagonal = np.eye(29) for i in range(29): for j in range(29): A[i][j] = data['consumes'][j] / data['r'] A = A - diagonal return A #%% def get_b_maatrix(data): b = np.ones([29,1], dtype=float) for i in range(29): b[i][0] = -data['dst']*data['consumes'][i]/data['velocity']+data['f'] for j in range(29): b[i][0] = b[i][0] + data['f']*data['consumes'][i]/data['r'] return b #%% 数值解 def numerical(data): data['velocity'] = 50 data['dst'] = 11469 data['r'] = 200 data['f'] = 10 A = get_A_matrix(data) b = get_b_maatrix(data) x = linalg.solve(A, b) return x #%% 符号解决方案 def symbolic(data): data['velocity'] = sympy.symbols("v", integer = True) data['dst'] = 12100 data['r'] = sympy.symbols("r", integer = True) data['f'] = sympy.symbols("f", integer = True) # 获取矩阵A并转移到符号矩阵M A = np.ones([29,29], dtype = float).tolist() diagonal = np.eye(29).tolist() for i in range(29): for j in range(29): A[i][j] = data['consumes'][j] / data['r'] - diagonal[i][j] M = sympy.Matrix(A) # 得到矩阵b并转移到符号矩阵b b = np.ones([29,1], dtype=float).tolist() for i in range(29): b[i][0] = -data['dst']*data['consumes'][i]/data['velocity']+data['f'] for j in range(29): b[i][0] = b[i][0] + data['f']*data['consumes'][i]/data['r'] b = sympy.Matrix(b) # LU solver x = M.LUsolve(b) return x #%% 主功能 if name == 'main': data = {} data['consumes'] = read_data_model() options = {"numerical":1, "symbolic":2} option = 1 if option == options['numerical']: x = numerical(data) print(x) elif option == options['symbolic']: x = symbolic(data) print(x) else: print("WARN!!!")

2023-05-29 上传