删除奇数行
查找:^[^\n]*\n([^\n]*)
替换:\1
删除偶数行
查找:^([^\n]*)\n[^\n]*
替换:\1
代码解释
^
:这个符号代表字符串的开始。在多行模式下,它也可以匹配每一行的开始。
[^\n]*
:这部分是一个字符类匹配(character class match)。[^\n]
表示匹配除了换行符 \n
之外的任意字符。星号 *
表示匹配前面的字符类零次或多次。[^\n]*
匹配从每一行开始到该行末尾(换行符之前)的所有字符。
\n
:换行符的表示。它匹配文本中的换行符。
([^\n]*)
:这部分再次使用了 [^\n]*
,匹配除了换行符之外的任意字符,零次或多次。不过,这次它被括号 ()
包围,表示一个捕获组(capturing group)。这意味着匹配到的文本可以被后续操作(如替换、提取等)单独引用。
\1
:在正则表达式中, \1
代表对第一个捕获组(capturing group)的引用。捕获组是通过将正则表达式的一部分放入圆括号 ()
中来创建的。这样,匹配该部分的文本可以在后续的正则表达式操作中被引用或者在替换操作中被重用。例如,考虑正则表达式 (a)b\1
:(a)
是第一个捕获组,它匹配字母 a
。b
直接匹配字母 b
。\1
引用了第一个捕获组的内容,即这里它代表字母 a
。所以,这个正则表达式会匹配字符串 "aba",其中 "a" 被捕获为第一个组,然后是 "b",接着是对第一个捕获组的引用,也就是另一个 "a"。
6 条评论
clear; close all; clc;
% [你的初始化代码,包括质量、速度、位置等]
figure;
hold on;
grid on;
% 初始化scatter3对象,并保存句柄
s1 = scatter3(p1(1), p1(2), p1(3), 100, 'r', 'filled');
s2 = scatter3(p2(1), p2(2), p2(3), 100, 'c', 'filled');
s3 = scatter3(p3(1), p3(2), p3(3), 100, 'b', 'filled');
% 循环更新位置和绘制
for i = 2:length(t)
end
clear; close all; clc;
% [你的初始化代码,包括质量、速度、位置等]
lim = 30000;
figure;
hold on;
grid on;
axis([-lim, lim, -lim, lim, -lim, lim]);
% 使用scatter3创建初始点,并保持句柄以供更新
s1 = scatter3(p1(1), p1(2), p1(3), 100, 'r', 'filled', 'MarkerEdgeColor', 'k');
s2 = scatter3(p2(1), p2(2), p2(3), 100, 'c', 'filled', 'MarkerEdgeColor', 'k');
s3 = scatter3(p3(1), p3(2), p3(3), 100, 'b', 'filled', 'MarkerEdgeColor', 'k');
% 设置固定的坐标轴范围
axis([-lim, lim, -lim, lim, -lim, lim]);
% 循环更新位置
for i = 2:length(t)
end
clear; close all; clc;
% [你的初始化代码,包括质量、速度、位置等]
lim = 30000;
figure;
% 预先创建绘图对象并保存句柄
h1 = plot3(p1(1), p1(2), p1(3), 'r.', 'MarkerSize', 25);
hold on; % 允许在同一图形上绘制多个图形
h2 = plot3(p2(1), p2(2), p2(3), 'c.', 'MarkerSize', 25);
h3 = plot3(p3(1), p3(2), p3(3), 'b.', 'MarkerSize', 25);
grid minor;
axis([-lim, lim, -lim, lim, -lim, lim]); % 设置固定的坐标轴范围
% 循环更新位置和绘制
for i = 2:length(t)
end
clear; close all; clc;
m1 = 5.5e4;
m2 = 4.5e4;
m3 = 3.5e4;
v0_1 = [2; 5; 3];
v0_2 = [2; -3; -0.8];
v0_3 = [-1.5; 1.5; -1];
p1 = [-8000; -5000; -6000];
p2 = [-3000; 7000; 5000];
p3 = [5000; -7000; 5000];
m = [m1; m2; m3];
v0 = [v0_1, v0_2, v0_3];
p0 = ([p1, p2, p3]);
ts = 15;
tend = 5000000;
t = 0 : ts : tend;
v = v0;
p = zeros(3, 3, length(t));
p(:, :, 1) = p0;
lim = 30000;
for i = 2 : length(t)
end
function acc = acc_calcu(p, m, c)
% - p: position, 3x3
% - m: mass, 3x1
% - c: gravity constant, 1x1
end
% 初始化位置和速度
pos = [-1 0; 1 0; 0 sqrt(3)] * 1e11; % 初始位置
vel = [0.5 0; -0.5 0; 0 -1] * 1e4; % 初始速度
masses = [5.972e24; 5.972e24; 5.972e24]; % 质量
radii = [6.371e6; 6.371e6; 6.371e6]; % 假设为地球半径
G = 6.67430e-11; % 万有引力常数
dt = 60 * 60; % 时间步长,1小时
steps = 1000; % 总模拟步数
% 初始化轨迹存储
trails = cell(3,1);
for i = 1:3
end
figure; % 创建一个新的图形窗口
hold on; % 保持当前图像,使之后的图像叠加在上面
for step = 1:steps
end
hold off; % 关闭持续绘图模式
% 初始化位置和速度
pos = [-1 0; 1 0; 0 sqrt(3)] * 1e11;
vel = [0.5 0; -0.5 0; 0 -1] * 1e4;
masses = [5.972e24; 5.972e24; 5.972e24];
radii = [6.371e6; 6.371e6; 6.371e6]; % 假设是地球半径
G = 6.67430e-11;
dt = 60 * 60;
steps = 1000;
for step = 1:steps
end