我正在准备一张结合蛋白行为图。
x = linspace(0,1,101)
y = ( x.*2.2*(10^-4))/(( x.+6.25*(10^-2))*(x.+2.2*(10^-2)))
plot(x,y)
应该导致钟形曲线(也许)或一条曲线,但我正在得到线性图。我已经使用其他软件进行了检查,并得出了该曲线的功能。有什么帮助吗?
答案 0 :(得分:1)
您要使用./
数组除法,而不是/
矩阵除法。
首先,在此处留一些空间,以便于阅读。并添加分号以抑制大输出。
x = linspace(0, 1, 101);
y = (x.*2.2*(10^-4)) / ( ( x.+6.25*(10^-2)) * (x.+2.2*(10^-2)) );
plot(x, y)
然后将其粘贴在一个函数中以方便调试:
function my_plot_of_whatever
x = linspace(0, 1, 101);
y = (x.*2.2*(10^-4)) / ( ( x.+6.25*(10^-2)) * (x.+2.2*(10^-2)) );
plot(x, y)
现在尝试:
>> my_plot_of_whatever
error: my_plot_of_whatever: operator *: nonconformant arguments (op1 is 1x101, op2 is 1x101)
error: called from
my_plot_of_whatever at line 3 column 3
当您收到类似*
或/
的投诉时,通常意味着您真正需要元素式“数组”操作.*
和{{ 1}}。解决该问题,然后重试:
./
那么这是怎么回事?让我们使用调试器!
>> my_plot_of_whatever
>>
啊哈。您的>> dbstop in my_plot_of_whatever at 4
ans = 4
>> my_plot_of_whatever
stopped in /Users/janke/Documents/octave/my_plot_of_whatever.m at line 4
4: plot(x, y)
debug> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
x 1x101 808 double
y 1x1 8 double
是标量,因此每个X值都使用相同的Y值。这是因为当您确实需要y
阵列划分时,您正在使用/
矩阵划分。解决该问题:
./
宾果