加载中…
  
博文
标签:

matlab

多条曲线

杂谈

分类: Matlab编程

Matlab中如何在一幅图中画很多条曲线?

-- by benbenknight

 

    在Matlab中,如何在一幅图中画多条曲线?

 

    如果曲线的条数比较少,例如3条,使用plot命令就可完成任务,具体命令如下:

        plot(x1,y1,x2,y2,x3,y3);

   

    但如果曲线条数很多,如30条,那该怎么办?写成plot(x1,x2,...,x30,y30)岂不是很烦?其实有个小技巧可以让你轻松以循环的方式在一幅图上画曲线,那就是命令hold。

    hold这个命令设定是否保持当前figure的属性,如果执行hold off,表示每次调用plot时都将当前figure设置成默认状态,即清空前面的曲线;如果执行hold on,表示每次调用plot时都只是在当前figure上添加曲线,以前的曲线继续保留。

    假设30条曲线的坐标存在矩阵x、y中,每行表示一条曲线,则画曲线的示意命令如下所示:

        figure;

     

标签:

matlab

堆栈

stack

杂谈

分类: Matlab编程

Matlab源代码:堆栈类Stack的实现

-- by benbenknight

 

    自己编写了一个堆栈类Stack,供大家分享。

   

    类的成员函数清单如下:

 Stack          STACK 堆栈对象Stack的构造函数 
 auto_inc       AUTO_INC 自动扩充堆栈容量 
 display        DISPLAY 显示堆栈内容 
 empty          EMPTY 清空堆栈 
 init           INIT 初始化堆栈 
 isempty        ISEMPTY 判断堆栈是否为空 
 pop            POP 将栈顶元素弹出堆栈 
 push      &n

标签:

matlab

subsref

详解

杂谈

分类: Matlab编程

Matlab中类的成员变量取值函数subsref详解

-- by benbenknight

 

    在Matlab中定义一个类,成员变量取值函数subsref必不可少,样本代码可参照前面博文《Matlab中如何编写一个类?》。

    假设subsref的定义如下所示:

    b = subsref(a,index)

    其中输入参数index是一个重要的变量,对于类中不同的成员变量,必须根据index的不同取值进行访问。 

    index是一个结构体,有type和subs两个数据成员,下面详细介绍index的取值情况。

    (1)概括

    subsref用于三种情况:矩阵(matrix)、元胞(cell)和结构体(struct)。如

    A(I)

    A{I}

    A.field

    对应上面

标签:

matlab

按引用传参

分类: Matlab编程

Matlab的函数中如何实现按引用传递参数?(原创)

-- by benbenknight

   

     Matlab中函数的参数都是采用按值传递的方式,没有按引用传递的方式,这让C++程序员很不习惯,很多时候我们可能会需要“在函数内实际修改参数的值”,尤其在当传入参数是一个类或结构体时。
    几经摸索,总算被俺发现了一种可以替代的方法,就是让函数的参数同时作为同名返回值(实际上不一定非得同名,同名是为了代码理解起来方便),这样便可实现“在函数内部修改参数,外部参数的实际值也会发生变化”的功能。
    下面是一个小例子。

 

文件test.m的源代码如下:
function test
% 测试函数

disp('按值传递参数,调用函数后,应有p=1');
p=1;
parameter_by_value(p);
disp(p);    % p=1

disp('按引用传递参数,调用函数后,应有p=2');
p=parameter_by_reference(p);
disp(p);    % p=2

disp('按引用传递参数,调用函数后,应有p1=2, p2=4, p3=6');
p1=1;
p2

标签:

matlab

中文

乱码

分类: Matlab编程
现象:
    MATLAB中用fgetl读出来的中文显示为乱码。
解决方法:
    读出来的内容需要使用native2unicode函数转换一下。
 
测试文件一:
----------------
% test_fgetl1.m 测试fgetl函数
    中文为什么读出来是乱码
fid = fopen('test_fgetl1.m');
while 1
    tline = fgetl(fid);
    if ~ischar(tline),   break,   end
    disp(tline)
end
fclose(fid);
-----------------
现象:
中文部分显示为乱码。
 
测试文件二:
----------------
% test_fgetl2.m 测试fgetl函数
    中文为什么读出来是乱码
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有