虽然我不懂你的程序,但是你里边有几个问题。首先,我复制粘贴到MATLAB之后字母Ф都是现实红色的(红色是有问题咯)。我随便用个字母Q代替了下。还有就是输出图像plot(Ia,n1,n2,n3,'k')这一行中n2,n3,这两个,都是在中文输入法下打出来的。当然也不行,这些符号仅能在英文状态下输入。然后运行有输出。图像在附件中。希望对你有帮助。
>> %直流电动机转速特性曲线
%以n=f(Ia)关系画出曲线
%--------------------------------
%当改变
%下面输入电机的基本数据:
q=1;Ce=1;Ra=00161;
%规定变量变化范围:
Ia=0:100:2000;U1=750;U2=800;U3=700;
%带入公式,计算出直流电动机转速特性曲线:
n1=(U1/(Ceq))-(RaIa)/(Ceq);
n2=(U2/(Ceq))-(RaIa)/(Ceq);
n3=(U3/(Ceq))-(RaIa)/(Ceq);
plot(Ia,n1,n2,n3,'k')
xlabel('Ia')
ylabel('n')
grid on
or(A,B)是逻辑判断中的“或”
A,B其中一个非0,表达式的值为1
A,B都为0,表达式的值为0
______________________________-
再给你补充两个:
and(A,B) "与"
not(A) “非”
%你这种方式画分段函数是新手常犯的错误,注意x<a,这种形式不是一个一个对x元素判断的。
%如果x是一个矩阵(向量),那么x<a,会返回一个同维0,1矩阵,其中满足条件的元素为1
%而if x < a 除非返回矩阵中的元素全为一,否则结果不会为真,这也就是你肯定执行
%else的原因
%下面我以0<=x<=1,y=x,1<=x<=2,y=x^2为例画分段函数,你对应着改就行
clear
clc
%方法一,分段分别画,然后用hold on将图像保持在同一个axes中
%保持在同一个坐标轴中还可以用set(gca,'Nextplot','Add')命令
x1 = linspace(0,1,30);
y1 = x1;
x2 = linspace(1,2,30);
y2 = x2^2;
plot(x1,y1)
hold on
%或者
% set(gca,'Nextplot','Add')
plot(x2,y2)
%方法二,巧用判断条件
x = linspace(0,2,60);
y = x(x>=0)(x<=1) + x^2(x>1)(x<=2);
plot(x,y)
%方法三,使用矩阵索引
x = linspace(0,2,60);
x1 = x(x>=0&x<=1);
x2 = x(x>=1&x<=2);
y1 = x1;
y2 = x2^2;
plot(x1,y1)
set(gca,'Nextplot','Add');
plot(x2,y2)
%注意这时第一个线段最后一个元素和第二个线段第一个元素没连在一起,如果需要连
%使用如下语句
line([x1(end) x2(1)],[y1(end) y2(1)])
%方法四,将原分段函数编为一个m函数,然后使用for循环求出函数值,最后画图
%这种方法虽然易懂,但速度慢不推荐
x = linspace(0,2,60);
y = zero(size(x));
for fi = 1:size(x,2)
y(fi) = myfun(x(fi)); %myfun为自己定义的分段函数
end
plot(x,y)
%myfun函数清单如下
function y = myfun(x)
if x >= 0 & x <= 1
y = x;
else
y = x^2;
end
end
以上基本就是matlab中所有画分段函数的方法,其中强烈推荐方法二,但是当分段较多时,这种方法不是很直观。当分段较多时,推荐使用方法三,分别将符合各段的自变量提出,然后分别求出y。进行绘图。当分段不是不多也不少时,推荐使用方法一分段定义x,然后求出y绘图。均为个人经验总结。
你这道题使用方法二解法如下:
%%clear
clc
x = -5:2:5;
y = (x^3-x5)(x<0)(x~=-3) + (x^2-x5+6)(x>0)(x<5)(x~=2)
(x~=3) + (x^2-x-1)((x==-3)|(x==2)|(x==3)|(x==5))
plot(x,y)
y =
-100 11 4 2 5 19
x-y图如下:
可以看出当分段较多时,该方法虽然运算较快,但不是很直观。这时可以考虑使用方法四,即for循环的方式,分别求出y,然后绘图,这里不再演示了。
x=[1 3 5 -1]';
n=length(x);
for i=1:n;
if x(i)>2
y(i)=fun1(x(i));
else
y(i)=fun2(x(i));
end
end
y
这是主程序。下面两个分别保存成M文件
function y = fun1(x)
y=xx+1;
end
function y = fun2(x)
y=x-1;
end
%层次分析法的matlab程序
1、disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=Ay(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=00001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=Ay(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
disp('权向量');disp(w);
disp('最大特征值');disp(t);
2、y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp('权向量');disp(w);
disp('最大特征值');disp(t);
%以下是一致性检验
扩展资料:
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
参考资料来源:百度百科-MATLAB
函数 norm 格式 n = norm(X) %X为向量,求欧几里德范数,即 。 n = norm(X,inf) %求 -范数,即 。 n = norm(X,1) %求1-范数,即 。 n = norm(X,-inf) %求向量X的元素的绝对值的最小值,即 。 n = norm(X, p) %求p-范数,即 ,所以norm(X,2) = norm(X)。 命令 矩阵的范数 函数 norm 格式 n = norm(A) %A为矩阵,求欧几里德范数 ,等于A的最大奇异值。 n = norm(A,1) %求A的列范数 ,等于A的列向量的1-范数的最大值。 n = norm(A,2) %求A的欧几里德范数 ,和norm(A)相同。 n = norm(A,inf) %求行范数 ,等于A的行向量的1-范数的最大值 即:max(sum(abs(A')))。 n = norm(A, 'fro' ) %求矩阵A的Frobenius范数 ,矩阵元p阶范数估计需要自己编程求,计算公式如下 举个例子吧 a=magic(3) sum(sum(abs(a)^4))^(1/4) a = 8 1 6 3 5 7 4 9 2 ans = 197411 希望能帮上
以上就是关于简单的MATLAB程序,我不会matlab全部的内容,包括:简单的MATLAB程序,我不会matlab、matlab 程序、matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)