matlab中,如何使用堆栈

作者&投稿:历贡 (若有异议请与网页底部的电邮联系)
matlab中stack怎么改~

这个事显示的精度问题,符号运算很准确的,比如》format long
>>1/3+1/3
结果为0.6666666666667
而sys(1/3+1/3)
ans=2/3
你说的那个0.3333就是默认的精度,想精确,把他当成符号计算,加上sym()
几个跟精确度有关的函数是digits(n),vpa(s,n),numeric(s)
具体含义matlab中help里面去看就行了

1.MATLAB的debug菜单
1.1控制单步运行
step:单步,不进入函数
step in:单步,进入子函数单步
step out:在函数中的话跳出函数,否则直接跳入下个断点处
save and run:存储,运行
go until cursor:运行到光标处
可以看到,以上几个按钮和C编辑器中是基本一样的意思
1.2断点操作
set/clear breakpoint:设置清除断点
set/modify conditional breakpoint:设置或修改条件断点,条件断点可以使程序满足一定条件时停止
enable/diable breakpoints:使断点有效或无效
clear breakpoints in all files:清除所有断点
stop if errors/warnings:程序出现错误或警告时停止运行,进入调试但不包括try...catch中的错误
进入调试时,命令窗口出现
K>>字样
运行到断点,程序停止,如要继续,则使用debug中的continue按钮
切换工作空间,结束对程序的调试,打开编辑窗口中的stack列表,选择base,切换到主工作空间。记得要清楚掉断点,红色圆点去掉了,绿色箭头(调试)变为白色,然后选择continue,白色箭头去掉,调试完成。
以下是一些常用的调试命令:
-------------------------------------转张卫国《MATLAB程序设计与应用》
dbstop断点设置
dbclear清楚断点
dbcont继续
dbdown/dbup修改工作空间的上下文关系
dbquit退出调试
dbstack显示当前堆栈的状态
dbstatus显示所有已设置的断点
dbstep执行一行或多行代码
dbtype显示M文件代码和相应的行号
内容不多,但是我觉得编写程序时debug是非常有用的,一些错误,不用单步等往往不容易找到,特别是在一些智能仪器单片机的开发过程中,debug往往展示着自己不同寻常的魅力,O(∩_∩)O~总结一点,希望对大家有所帮助,不当之处还望大家不吝指正。

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

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

类的成员函数清单如下:
Stack STACK 堆栈对象Stack的构造函数
auto_inc AUTO_INC 自动扩充堆栈容量
display DISPLAY 显示堆栈内容
empty EMPTY 清空堆栈
init INIT 初始化堆栈
isempty ISEMPTY 判断堆栈是否为空
pop POP 将栈顶元素弹出堆栈
push PUSH 将元素x压入堆栈
subsasgn SUBSASGN 对堆栈数据成员赋值
subsref SUBSREF 读取堆栈的数据成员
top TOP 返回栈顶元素

源代码清单如下:
(由于无法添加附件,只能出此下策,请大家原谅啊)
%-----------------------------------------------
% 文件【test_stack.m】的代码清单:
%-----------------------------------------------
% test_stack.m 测试堆栈对象
a = Stack;
a = init(a,10);
arr = [1 2 3];
for i=1:length(arr)
a = push(a,arr(i));
a.top
a.stack
end
while ~isempty(a)
[a,x] = pop(a);
x
a.top
a.stack
end
%-----------------------------------------------
% 文件【@Stack\auto_inc.m】的代码清单:
%-----------------------------------------------
function a = auto_inc(a)
% AUTO_INC 自动扩充堆栈容量
%
% a = auto_inc(a)
%
% benbenknight
if a.step_size<=0
a.step_size = 100;
end
a.max_size = a.max_size + a.step_size;
a.stack = [a.stack;zeros(a.step_size,1)];
%-----------------------------------------------
% 文件【@Stack\display.m】的代码清单:
%-----------------------------------------------
function display(p)
% DISPLAY 显示堆栈内容
%
% display(p)
%
% benbenknight
disp(struct(p));
%-----------------------------------------------
% 文件【@Stack\empty.m】的代码清单:
%-----------------------------------------------
function a = empty(a)
% EMPTY 清空堆栈
%
% a = empty(a)
%
% benbenknight
a.top = 0;
%-----------------------------------------------
% 文件【@Stack\init.m】的代码清单:
%-----------------------------------------------
function a = init(a,sz)
% INIT 初始化堆栈
%
% a = init(a,sz)
% sz:堆栈的初始容量大小。
%
% benbenknight
if sz>0
a.max_size = sz;
a.stack = zeros(sz,1);
else
error('Invalid stack size');
end
%-----------------------------------------------
% 文件【@Stack\isempty.m】的代码清单:
%-----------------------------------------------
function b = isempty(a)
% ISEMPTY 判断堆栈是否为空
%
% b = isempty(a)
% b:如果堆栈为空,返回1;否则,返回0。
%
% benbenknight
if a.top<=0
b = 1;
else
b = 0;
end
%-----------------------------------------------
% 文件【@Stack\pop.m】的代码清单:
%-----------------------------------------------
function [a,x] = pop(a)
% POP 将栈顶元素弹出堆栈
%
% [a,x] = pop(a)
% x:输出参数,保存弹出的栈顶元素
%
% benbenknight
if isempty(a)
x = [];
else
x = a.stack(a.top);
a.stack(a.top) = 0;
a.top = a.top-1;
end
%-----------------------------------------------
% 文件【@Stack\push.m】的代码清单:
%-----------------------------------------------
function a = push(a,x)
% PUSH 将元素x压入堆栈
%
% a = push(a,x)
%
% benbenknight

% 判断是否需要自动增长堆栈空间
if a.top == a.max_size
a = auto_inc(a);
end
% 添加
a.top = a.top + 1;
a.stack(a.top) = x;
%-----------------------------------------------
% 文件【@Stack\Stack.m】的代码清单:
%-----------------------------------------------
function a = Stack(varargin)
% STACK 堆栈对象Stack的构造函数
%
% a = Stack(varargin)
%
% benbenknight
switch nargin
case 0
a.top = 0; % 栈顶元素的下标
a.max_size = 0; % 堆栈的最大容量
a.step_size = 100; % 堆栈自动扩大容量时的步长
a.stack = []; % 堆栈元素数组
a = class(a,'Stack');
case 1
if isa(varargin{1},'Stack')
a = varargin{1};
else
error('Wrong argument type')
end
otherwise
error('Wrong Number of input arguments')
end
%-----------------------------------------------
% 文件【@Stack\subsasgn.m】的代码清单:
%-----------------------------------------------
function a = subsasgn(a,index,val)
% SUBSASGN 对堆栈数据成员赋值
%
% benbenknight
switch index(1).type
case '.'
switch index(1).subs
case 'top'
a.top = val;
case 'max_size'
a.max_size = val;
case 'step_size'
a.step_size = val;
case 'stack'
if length(index)==2
a.stack(index(2).subs{:}) = val;
else
a.stack = val;
end
end
end
%-----------------------------------------------
% 文件【@Stack\subsref.m】的代码清单:
%-----------------------------------------------
function b = subsref(a,index)
% SUBSREF 读取堆栈的数据成员
%
% benbenknight
switch index(1).type
case '.'
switch index(1).subs
case 'top'
b = a.top;
case 'max_size'
b = a.max_size;
case 'step_size'
b = a.step_size;
case 'stack'
if length(index)==2
b = a.stack(index(2).subs{:});
else
b = a.stack;
end
end
end

%-----------------------------------------------
% 文件【@Stack\top.m】的代码清单:
%-----------------------------------------------
function x = top(a)
% TOP 返回栈顶元素
% 注意,并不弹出堆栈
%
% x = top(a)
%
% benbenkight
if isempty(a)
x = [];
else
x = a.stack(a.top);
end


matalab中1.347e-14是多少
atlab中SimPowerSystems-Elements模块使用说明 Matlab,Simulink,SimPowerSystems,帮助说明 Matlab中,Simulink下,SimPowerSystems工具箱中各元器件(Elements)模块的

python生成的图如何利用visio修改
python 保存为svg,svg 转emf,svg 在visio里打开有的线乱了,这里使用emf打开,用在线 在线svg 转emf,用visio打__mf。?_isio: 1)对齐技巧: 先选择的第一个为基准位置; 2)保存高清图技巧:另存为--》类型:.jpg; 3)小图标网址。?_ython:画曲线 & 保存 实现代码。?_atlab:1) 画...

地层厚度校正
下面是求取原始厚度的M atlab程序:程序1:求取地层骨架厚度 function y=ficfun(b,h1,h2)%输入的砂岩比和小层序的顶底深 用样条微积分法计算小层序的骨架厚度,其值小于地层现有厚度,反映当时的沉积量 骨架厚度是假设孔隙度为零时的地层厚度 hh=h1:0.1:h2;ps=0.39*exp(-6.29*1e-4*...

如何用modelsim编译systemC的设计
大家同时也可以看到,现在在ModelSim等仿真软件中,SystemC使用起来跟Verilog\/VHDL一样,非常方便。举一个例子,我们假如想做DVB-S2的LDPC,我们一定会先用C++(M atlab也可以)写仿真程序,验证算法的正确性。然后假设我们已经确定了目标ASIC的架构,打算用Verilog做RTL设计。现在既然C++代码的验证部分可以...

振动 离散系统中边界条件重要么 为什么
与流体动水压力有关的附加项包括附加阻 尼矩阵、 附加质量矩阵和附加刚度矩阵,其中附加质量矩阵与流体速度无关,下面分别讨论只考虑附加质量阵和综合考虑附加项这两种情况下PPR保温管道的自振频率。 ( 1)只考虑附加质量矩阵即不考虑流速只考虑附加质量矩阵即不考虑流速影响时,利用M atlab编制程序计算...

谁能帮我翻译一段话,中译英!急
noise. Therefore, the signal using wavelet transform to eliminate the simultaneous extraction of signals with noise is better than the traditional Fourior transform analysis. Preparation program through M atlab given signal noise suppression and elimination of non-stationary noise signals....

施工中的椭圆怎么放样.请详细说明简易的放样方式,以及计算公式_百度...
可以制作楼梯踏步的面砖等。 Ai 、B i 、Ci ( i = 2 ~ 17) 计算流程见图 5, 其中的参数等分变量 tn = 4. 543 57, 弧度等分变量 ln = 271. 817 56。手算和 M atlab编程计算结果十分接近 , 现摘录手算参数 t的计算结果见表 2。i = 20 ~ 32时计算方法类似。另一半对称即可。

团风县19445886210: matlab中subplot怎么用 -
华婵可欣: 1、例如 subplot(2,2,1),表示一个2行2列的画布上,用第一行第一列画图. 2、例如:复制一下程序到matlab窗口 figuret=0:0.001:1;y1=sin(10*t);y2=sin(15*t);y3=sin(20*t);y4=sin(25*t); subplot(2,2,1) plot(t,y1,'--r*','linewidth',2,'markersize',5) ...

团风县19445886210: 想问一下大侠们,堆栈在matlab中是怎么表达的? -
华婵可欣: a%i

团风县19445886210: 程序里面的堆栈与指针怎么用
华婵可欣: 堆栈是一种执行“后进先出”算法的数据结构. 设想有一个直径不大、一端开口一端封闭的竹筒.有若干个写有编号的小球,小球的直径比竹筒的直径略小.现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出...

团风县19445886210: 汇编程序中如何使用堆栈 -
华婵可欣: 首先在程序头部定义程序堆栈的大小 比如.stack 64 那么堆栈的大小就是64个字节,而每个堆栈单元默认是两个字节(也就是一个字WORD),那么64/sizeof(WORD) = 64/2 = 32也就是有32个单元. 根据计算机体系的不同,有的栈是从低位往高...

团风县19445886210: 如何用matlab实现sql里的group by -
华婵可欣: 在金融数据处理里经常需要对每只股票的信息进行汇总,有下面一个例子;a={'000001',10;'000001',20;'000002',10;'000002',20;'000002',30};需要这样的结果{'000001',30;'000002',60}本人接触matlab时间不长,提供以下思路,看看大家有...

团风县19445886210: 汇编中的堆栈如何使用 -
华婵可欣: 堆栈的定义是这样的: dssg segment stackaa dw 512dup(?) dssg ends 一般的说,当PUSH/POP指令不频繁时用系统堆栈就可以了,但是当需要堆栈存储大量数据,如作为子程序传替参数时就要定义一个堆栈,而且一般来说一个段的内容不能超过64K,因为偏移地址最大只能表示64K,所以定义的堆栈也不能是无限大,如果超过了64K,就定义两个吧!堆栈在汇编中对于初学者用的很少,一般小程序都不需要用的!用起来也不是很难,就是注意下,在子程序调用时,什么时候是返回地址,什么时候是寄存器值!总之,记住先进后出,再做题时画个堆栈图,应该不会很难的!

团风县19445886210: 怎么用matlab把两幅图像叠加在一起? -
华婵可欣: [f1 p1]=uigetfile('*.jpg'); %选取第一幅图像 Path1=[p1 f1] %获取图像的路径 [A1 map1]=imread(Path1);%读取图像,A1即为图像矩阵. [f2 p2]=uigetfile('*.jpg'); %选取第二幅图像 Path2=[p2 f2] %获取图像的路径 [A2 map]=imread(Path2);%读取图像,A2即为图像矩阵. %当两幅图尺寸一样大的时候,就可以进行叠加. X=A1*50%+A2*50%; imshow(X);%显示图像

团风县19445886210: 如何在matlab中使用libsvm -
华婵可欣: 在MALTAB使用SVM库的方式为: SVMstruct = svmtrain(data,groups,'Kernel_Function','rbf'); 其中data是样本集,groups是组集,Kernel_Function是核函数的字符串,后面的rbf表示选择的是径向基函数(也可以自定义成其他的) 一般说来你需要收集样本集和所需要分的组,然后选择一个合适的核函数,然后使用svmtrain来训练支持向量机.训练完毕后使用svmclassify分类. 详细信息可以在Matlab command window输入doc SVM查看.

团风县19445886210: matlab中format long函数详细用法? -
华婵可欣: 详细举例如下: format short:默认格式,小数点后保留4位 format long:有效数字16位 format long e:有效数字16位加3位指数 format short e:有效数字5位加3位指数 format bank:保留两位小数位 format +:只给出正负 format ...

团风县19445886210: 关于MATLAB符号运算的问题 -
华婵可欣: 1、MATLAB的符号运算是借助于其它符号运算内核完成的,2008a之前是用Maple,2008b之后用MuPad,不同版本对符号运算的具体支持可能存在差别,例如,你说的第一个问题,我在6.5和2007b、2013a等几种版本下测试,用这两种写法都可...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网