提问人:Wrloord 提问时间:9/25/2023 最后编辑:ThomasIsCodingWrloord 更新时间:9/25/2023 访问量:40
在 matlab 中绘制一系列函数
Graphing a sequence of functions in matlab
问:
我想绘制函数连续的前 10 项。
为此,我尝试在MATLAB中执行以下代码:
n_max = 10;
x = linspace(0, 1, 1000);
fn_values = zeros(n_max, length(x));
for n = 1:n_max
fn = zeros(size(x));
for k = 0:(2^n - 1)
Ik = [(k / 2^n), ((k + 1) / 2^n)];
fn = fn + (k / 2^n) * (x >= Ik(1) & x < Ik(2));
end
fn_values(n, :) = fn;
end
figure;
hold on;
for n = 1:n_max
plot(x, fn_values(n, :), 'DisplayName', ['f_', num2str(n)]);
end
title('Graph of the first 10 terms of the sequence f_n(x)');
xlabel('x');
ylabel('f_n(x)');
legend('show');
grid on;
hold off;
这行得通吗?任何帮助都是值得赞赏的!
答:
1赞
ThomasIsCoding
9/25/2023
#1
您可以尝试下面的代码
n_max = 10;
x = linspace(0, 1, 1000);
f = @(n,x) sum(cell2mat(transpose(arrayfun(@(k) k*sum(x>=k./2.^n & x< (k+1)./2.^n, 1), 0:(2^n-1), UniformOutput=false))),1)/2^n;
figure;
hold on;
for n = 1:n_max
plot(x, f(n, x), 'DisplayName', ['f_{', num2str(n),'}']);
end
title('Graph of the first 10 terms of the sequence f_n(x)');
xlabel('x');
ylabel('f_n(x)');
legend('show');
grid on;
hold off;
评论
1赞
Wolfie
9/26/2023
在这里定义为匿名函数在你的答案部分压缩了很多复杂性,这基本上回答了问题 - 它可能受益于作为一个本地定义的函数,所以你可以添加注释来解释你的代码实际上对 OP(和其他人)做了什么f
上一个:窥视迭代器
下一个:生成连续和重叠的数字块序列
评论