# About modifying the .m file in MATLAB

**URL:** <https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210>\
**Category:** General Usage\
**Created:** [July 5, 2023, 12:47pm UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210 "2023-07-05T12:47:31Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![lzq-zbc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lzq-zbc/32/49776_2.png) [@lzq-zbc](https://discourse.julialang.org/u/lzq-zbc)\
**Post date:** [July 5, 2023, 12:47pm UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/1 "2023-07-05T12:47:31Z")

</div>

Does Julia have a toolkit that enables reading and modifying .m files in MATLAB?

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [July 5, 2023, 1:39pm UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/2 "2023-07-05T13:39:55Z")

</div>

It’s quite unclear what you’re looking for; there is [MATLAB.jl](https://github.com/JuliaInterop/MATLAB.jl) for connecting to the MATLAB engine and running `.m` scripts and there’s [MAT.jl](https://github.com/JuliaIO/MAT.jl) for reading and writing `.mat` files.

---

<div class="post-metadata">

**Author:** ![DanielVandH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/danielvandh/32/31134_2.png) [@DanielVandH](https://discourse.julialang.org/u/DanielVandH)\
**Post date:** [July 5, 2023, 1:40pm UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/3 "2023-07-05T13:40:11Z")

</div>

If you’re just wanting to treat the .m file as if it were a text file and modify it, then I’m fairly certain you can just pretend it is one. e.g. in one of my MATLAB scripts I can read the lines from Julia using

```julia
julia> lines = readlines("script.m")
186-element Vector{String}:
 "%% Setup"
 "mu_range = [0.0, 0.01, 0.10, 0.20, 0.50, 1.0];"
 "T = 2.0;"
 "sol_pairs = cell(length(mu_range), 2); % [times pole]"
 "L = 20.0;"
 "Lr = 5.0;"
 ⋮
 "f = strrep(f', 'i', 'im')'; % f" ⋯ 30 bytes ⋯ "ors (...), hence the transpose."
 "fid = fopen(filename, 'w');"
 "fprintf(fid, '%s', f);"
 "fclose(fid);"
 "end"

```

If that’s not what you want, see MATLAB.jl or MAT.jl as @mbauman suggests.

---

<div class="post-metadata">

**Author:** ![lzq-zbc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lzq-zbc/32/49776_2.png) [@lzq-zbc](https://discourse.julialang.org/u/lzq-zbc)\
**Post date:** [July 6, 2023, 1:12am UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/4 "2023-07-06T01:12:52Z")

</div>

The feature I want to implement is to be able to read and write and modify .m files directly

```julia
function mpc = case5
%CASE5 Power flow data for modified 5 bus, 5 gen case based on PJM 5-bus system
% Please see CASEFORMAT for details on the case file format.
%
% Based on data from ...
% F.Li and R.Bo, "Small Test Systems for Power System Economic Studies",
% Proceedings of the 2010 IEEE Power & Energy Society General Meeting

% Created by Rui Bo in 2006, modified in 2010, 2014.
% Distributed with permission.

% MATPOWER

%% MATPOWER Case Format : Version 2
mpc.version = '2';

%%----- Power Flow Data -----%%
%% system MVA base
mpc.baseMVA = 100;

%% bus data
%	bus_i	type	Pd	Qd	Gs	Bs	area	Vm	Va	baseKV	zone	Vmax	Vmin
mpc.bus = [
	1	2	0	0 0	0	1	1	0	230	1	1.1	0.9;
	2	1	300	98.61	0	0	1	1	0	230	1	1.1	0.9;
	3	2	300	98.61	0	0	1	1	0	230	1	1.1	0.9;
	4	3	400	131.47	0	0	1	1	0	230	1	1.1	0.9;
	5	2	0	0 0	0	1	1	0	230	1	1.1	0.9;
];

%% generator data
%	bus	Pg	Qg	Qmax	Qmin	Vg	mBase	status	Pmax	Pmin	Pc1	Pc2	Qc1min	Qc1max	Qc2min	Qc2max	ramp_agc	ramp_10	ramp_30	ramp_q	apf
mpc.gen = [
	1	40 0	30 -30 1	100	1	40	0	0	0	0	0	0	0	0	0	0	0	0;
	1	170 0	127.5	-127.5	1	100	1	170	0	0	0	0	0	0	0	0	0	0	0	0;
	3	323.49	0	390 -390	1	100	1	520	0	0	0	0	0	0	0	0	0	0	0	0;
	4	0 0	150 -150	1	100	1	200	0	0	0	0	0	0	0	0	0	0	0	0;
	5	466.51	0	450 -450	1	100	1	600	0	0	0	0	0	0	0	0	0	0	0	0;
];

%% branch data
%	fbus	tbus	r	x	b	rateA	rateB	rateC	ratio	angle	status	angmin	angmax
mpc.branch = [
	1	2	0.00281	0.0281	0.00712	400	400	400	0	0	1	-360	360;
	1	4	0.00304	0.0304	0.00658	0	0	0	0	0	1	-360	360;
	1	5	0.00064	0.0064	0.03126	0	0	0	0	0	1	-360	360;
	2	3	0.00108	0.0108	0.01852	0	0	0	0	0	1	-360	360;
	3	4	0.00297	0.0297	0.00674	0	0	0	0	0	1	-360	360;
	4	5	0.00297	0.0297	0.00674	240	240	240	0	0	1	-360	360;
];

%%----- OPF Data -----%%
%% generator cost data
%	1	startup	shutdown	n	x1	y1	...	xn	yn
%	2	startup	shutdown	n	c(n-1)	...	c0
mpc.gencost = [
	2	0	0	2	14	0;
	2	0	0	2	15	0;
	2	0	0	2	30	0;
	2	0	0	2	40	0;
	2	0	0	2	10	0;
];

```

The file content looks like this.  
Finally, I want to be able to run the modified .m file directly in Julia

---

<div class="post-metadata">

**Author:** ![stillyslalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stillyslalom/32/45687_2.png) [@stillyslalom](https://discourse.julialang.org/u/stillyslalom)\
**Post date:** [July 6, 2023, 4:15am UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/5 "2023-07-06T04:15:38Z")

</div>

Your question seems a bit underspecified - Julia is not Matlab, and although it’ll work fine for rewriting Matlab files using string manipulation methods and running them via MATLAB.jl, I’m not sure why you’d use Julia for that particular task.

If you want to modify and solve optimal power flow problems specified in the MATPOWER format using a Julia power network solver, this should get you pointed in the right direction: [Getting Started · PowerModels](https://lanl-ansi.github.io/PowerModels.jl/stable/quickguide/)

---

<div class="post-metadata">

**Author:** ![lzq-zbc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lzq-zbc/32/49776_2.png) [@lzq-zbc](https://discourse.julialang.org/u/lzq-zbc)\
**Post date:** [July 6, 2023, 7:30am UTC](https://discourse.julialang.org/t/about-modifying-the-m-file-in-matlab/101210/6 "2023-07-06T07:30:43Z")

</div>

Thank you very much for your help, my problem has been solved with your prompt
