matlab函数问题与函数输出图像 matlab如何用out输出图像
作者&投稿:空阀 (若有异议请与网页底部的电邮联系)
在matlab中如何输出一个函数的图像~
这小段代码问题太多了,简直把我能想到的错误都犯全了....... -_-||||
1、linspace取点太少,只有两个点,无论怎么算都只能得到直线;
2、if语句不适合使用向量作为判断条件,因为只有向量所有元素都为真的时候才会执行;
3、关系运算不能连写,例如60<=v<100的含义并不是(60<=v)&&(v<100),而是(60<=v)<100,显然,表达式(60<=v)作为关系运算,得到的结果或0或1,肯定是小于100的,所以(60<=v)<100的结果为真,因而,会直接执行if的第一个分支,后面的都不可能被执行到。
4、MATLAB中有elseif关键词,尽管也可以用else if,但更推荐前者;
5、最后else的s算是什么?
正确写法之一(使用for循环)
v=linspace(60,120,61);for i=1:length(v) if 60<=v(i) && v(i)<100 c(i)=24000.*v(i)./55; elseif v(i)==100 c(i)=24000.*v(i)./80; elseif 100<v(i) && v(i)<=120 c(i)=24000.*v(i)./105; else c(i)=-5; endendplot(v,c);
正确写法之二(使用向量运算)
v=linspace(60,120,61);c=ones(size(v))*5;c(60<=v&v<100)=24000*v(60<=v&v<100)/55;c(v==100)=24000*v(v==100)/80;c(100<v&v<=120)=24000*v(100<v&v<=120)/105;plot(v,c);
imwrite函数用于输出图像,其语法格式为:
imwrite(X,map,filename,fmt)
imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。
因为程序,只运行了t=-10时,就结束了。所以结果是为-1,画出来就是一条直线。
你应该采用循环方式,来进行。你可以将执行命令改成下列形式,就可以达到你的目的。
t=-10;
while t<=10;
fg=u(t-2);
plot(t,fg,'r*');hold on
t=t+0.1;
end
axis([-11 11 -1.5 1.5])
这小段代码问题太多了,简直把我能想到的错误都犯全了....... -_-||||
1、linspace取点太少,只有两个点,无论怎么算都只能得到直线;
2、if语句不适合使用向量作为判断条件,因为只有向量所有元素都为真的时候才会执行;
3、关系运算不能连写,例如60<=v<100的含义并不是(60<=v)&&(v<100),而是(60<=v)<100,显然,表达式(60<=v)作为关系运算,得到的结果或0或1,肯定是小于100的,所以(60<=v)<100的结果为真,因而,会直接执行if的第一个分支,后面的都不可能被执行到。
4、MATLAB中有elseif关键词,尽管也可以用else if,但更推荐前者;
5、最后else的s算是什么?
正确写法之一(使用for循环)
v=linspace(60,120,61);for i=1:length(v) if 60<=v(i) && v(i)<100 c(i)=24000.*v(i)./55; elseif v(i)==100 c(i)=24000.*v(i)./80; elseif 100<v(i) && v(i)<=120 c(i)=24000.*v(i)./105; else c(i)=-5; endendplot(v,c);
正确写法之二(使用向量运算)
v=linspace(60,120,61);c=ones(size(v))*5;c(60<=v&v<100)=24000*v(60<=v&v<100)/55;c(v==100)=24000*v(v==100)/80;c(100<v&v<=120)=24000*v(100<v&v<=120)/105;plot(v,c);