matlab编程入门学习(5)

第六章、复数数据、字符数据和附加画图类型

6.1、复数

复数的简单运算法则
如果复数c1=a1+b1i 和复数c2=a2+b2i,那么它们的加减乘除运算定义如下。
c1 + c2 = (a1 + a2) + (b1 + b2)i 
c1 - c2 = (a1 - a2) + (b1 - b2)i 
c1 × c2 = (a1a2 - b1b2) + (a1b2 + b1a2)i 
c1 / c2=(a1a2+b1b2)/(a12 + b22) +(b1a2-a1b2)/(a22+b22) i 
复数中我们可以对他们进行相等和不相等的判断,但是我们并不能对他们进行大小的哦判断,因为如果你这样写的话c1>c2得到的只能是对复数的实部进行比较,但是我们更加关心的其实是他们的大小的关系,于是很容易联想到求复数的模!
abs(c1)

6.2、复函数

函数real 将复数的实部转化为double 型数据,把复数的虚部抛弃。函数imag 把函数的虚部转化为相应的实数。
conj(c) 计算c 的共共轭复数。如果c=a+bi,那么conj(c)=a-bi。
real(c) 返回复数c 的实部
imag(c) 返回复数c 的虚部
isreal(c) 如果数组c 中没有一个元素有虚部,函数isreal(c)将返回1。所以如果一个数组c 是复数组成,那么~isreal(c)将返回1。
abs(c) 返回复数c 模
angle(c) 返回复数c 的幅角,等价于atan2(imag(c),real(c))
复函数的画图不能够简单的使用plot(x,t)就可以了,因为这样画出来的仅仅只是画出了函数的,譬如:
t = 0:pi/40:4*pi;
y = exp(-0.2*t).*(cos(t)+1i*sin(t));
plot(t,y,'r--');

只能把函数的实部画出来
要想画出来函数的本身必须分清复函数的实部和虚部
t = 0:pi/40:4*pi;
y = exp(-0.2*t).*(cos(t)+1i*sin(t));
plot(t,real(y),'r--');
hold on;
plot(t,imag(y),'b--');
title('imag_func');
xlabel('t');
ylabel('y');
legend('real','imaginary');
hold off;
这样就OK了!!


或者直接这样写:
t = 0:pi/40:4*pi;
y = exp(-0.2*t).*(cos(t)+1i*sin(t));
plot(y,'b--');
它自己会分清楚函数的虚实部

6.3、字符串函数(string functions)

strcmpi    忽略大小写判断两字符串是否等价

用char 函数创建二维字符数组,我们就不用担心每一行的长度不相同了。

name = char('Stephen J. Chapman','Senior Engineer')

我们不需要考虑每一个字符串的长度

strcmp     判断两字符串是否等价

strncmp   判断两字符串前n 个字符是否等价

strncmpi  忽略大小写判断两字符串前n 个字符是否等价

所有的关系运算符(>,>=,<,<=,==,~=)都是对字符所对应的ASCII 值进行比较。
isletter     判断该个字符是不是字母
isspace   判断改个字符是不是空白字符(空格,tab以及换行符)

findstr      返回字符在字符串中出现的位置
function number = C_strcmp(str1,str2)
%this is a program about compare 2 string
msg = nargchk(2,2,nargin);
error(msg);
str1(find(isspace(str1)))=[];
str2(find(isspace(str2)))=[];
min_str_length = min(length(str1),length(str2));
fprintf('the min length among the two strings is %d\n',min_str_length);
for i = 1:min_str_length
    if str1(i)>str2(i)
        k = 1;
        break;
    elseif str1(i)<str2(i)
        k = -1;
        break;
    else
        k = 0;
    end
end
if k==0
    if length(str1)>length(str2)
        k = 1;
    elseif length(str1)<length(str2)
        k = -1;
    else
        k = 0;
    end
end
        
    
number = k;

这是个我自己实现的strcmp函数代码,关键就是isspace这个函数的应用!!
调用函数
str1 = input('please input a string:','s');
str2 = input('please input a string:','s');
fprintf('the result of :%d\n',C_strcmp(str1,str2));

可以实现除去空格之后的字符串的比较大小。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值