我对Matlab比较陌生。我想要做的就是将x = @(n) 1/n^n
的序列0
绘制成10
。首先是自然缩放,然后是x轴的对数缩放。
我尝试将semilogx
用于第二个情节。但是,我总是收到一条错误消息:
未定义函数'semilog'用于'function_handle'类型的输入参数。
如果我尝试按以下方式定义x
:n = 0:.01:10; x = 1/n.^n;
我收到错误消息:
矩阵尺寸必须达成一致
我如何定义x
并绘制两张图?
答案 0 :(得分:2)
在你的情况下,n是一个向量,所以你必须首先使用Matlab数组运算符来定义你的匿名函数,用于除法和求幂,如下所示:
x = @(n) 1./n.^n
然后举个例子:
n = [0:.01:10];
现在制作你的情节:
figure; semilogx(n,x(n)); grid on;
这给出了如下情节:
答案 1 :(得分:2)
x = @(n) 1./n.^n
n = 0:.01:10;
semilogx(x(n))
答案 2 :(得分:2)
您需要在.
之前添加/
:
n = 0:.01:10; x = 1./n.^n;
plot(n,x)
figure
semilogx(n,x)
在您的代码中,1/n.^n
被解释为“n.^n
的倒数”,其中n.^n
是一个向量;并且矢量的倒数未定义。你想要的是那个向量的元素明智的逆,为此你需要.
之前的额外/
。