matlab循环语句 for 循环 又用到了未循环之前的数据

MATLAB编程-循环结构_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MATLAB编程-循环结构
上传于|0|0|文档简介
&&MATLAB编程-循环结构
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩32页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢苹果/安卓/wp
积分 312, 距离下一级还需 138 积分
权限: 自定义头衔, 签名中使用图片
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡下一级可获得
道具: 抢沙发
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 13 天连续签到: 2 天[LV.3]偶尔看看II
各位好,下面是我写的Code》
function [price]=EuropeanUpAndOutCall(S,X,B,r,d,deltaT,sigma)
%S is the current price of the underlying asset,
%X is the exercise price of the option,
%B is the barrier of the option,
%r is the risk-free rate,
%d is the dividend,
%deltaT is the time to maturity,
%sigma is the volatility of the asset price,
S = 1389.46;
NUM = xlsread('EuropeanUpAndOutCall.xls');
B = NUM(:,1);
X = NUM(:,2);
%问题的关键部分在下面
for i = 1:5
& & deltaT = NUM(i,3);
& & sigma = NUM(i,4);
& & r = NUM(i,7);
& & d = NUM(i,8);
lambda = (r-d+sigma^2/2)/(sigma^2);
y = (log(B.^2./(S*X)))/(sigma*sqrt(deltaT)+eps)+lambda*sigma*sqrt(deltaT);
x1 = (log(S./B))/(sigma*sqrt(deltaT)+eps)+lambda*sigma*sqrt(deltaT);
y1 = (log(B/S))/(sigma*sqrt(deltaT)+eps)+lambda*sigma*sqrt(deltaT);
d1 = (log(S./X)+(r-d+sigma^2/2)*deltaT)/(sigma*sqrt(deltaT)+eps);
d2 = d1-sigma*sqrt(deltaT);
f1 = S*exp(-d*deltaT)*normcdf(d1)-X*exp(-r*deltaT).*normcdf(d2);
f2 = -S*normcdf(x1)*exp(-d*deltaT)+X*exp(-r*deltaT).*normcdf(x1-sigma*sqrt(deltaT));
f3 = S*exp(-d*deltaT)*((B/S).^(2*lambda)).*(normcdf(-y)-normcdf(-y1));
f4 = X*exp(-r*deltaT).*((B/S).^(2*lambda-2)).*(normcdf(-y+sigma*sqrt(deltaT))-normcdf(-y1+sigma*sqrt(deltaT)));
price = f1 + f2 + f3 - f4;
最终的price是输出量,在for循环中,对于每一个i值得出的price是一个26行的向量,但是最后在命令窗口只出现最后循环的值,中间的price值被覆盖了,请问怎样能把所有的结果,即一个26行5列的矩阵输出到excel的表格里呢?
我在网上有搜到说先定义一个空矩阵a,最后在得出price值之后,再定义a =[a;price],但还是不行,请各位指教,实在不知道该怎么解决。。。多谢多谢
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
最前面: a=zeros(0,26)
a =[a,price]
先试试看。
试了,不成功。。问了别人,改成》
price = zeros(26,5);
price(:,ii) = f1 + f2 + f3 - f4;
最后成功了
不过还是多谢你啦
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师查看: 5755|回复: 8|关注: 0
如何保留for循环中的中间数据~~
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
坛子里的各位大牛,下午好··我有一个问题,就是如何让保留for循环的中间数据~~
&&xt(:,i)=cs(:,i);
for&&k=1:500
& &dt=1/Fs;
& &d=0.05;
& &a=1-d^2/(1-d^2);
& &b=d^2/sqrt(1-d^2);& & %d is damping ratio
& &t(k)=0.01*k;
& &w=2*pi/t(k);
& &time=0:dt:(length(xt)-1)*
& &wd=w*sqrt(1-d^2);
& &Hw=exp(-1*d*w*time).*[a*sin(wd*time)+b*cos(wd*time)];
& &y1=conv(xt(:,i),Hw).*(dt*wd);
& &x1=max(abs(y1));
& &c(k)=x1/100;
<h1 style="color:# 麦片财富积分
关注者: 5
没明白 你说的具体点 想保留什么?一般保留一个变量就是这个名称不被替换就好了啊。。
<h1 style="color:# 麦片财富积分
回复 2# Ryu_So 的帖子
谢谢~呵呵·i=1后,k一个循环,得到一个c矩阵·~我怎么保留它~然后进入下一个循环i=2~呵呵·~谢谢··
<h1 style="color:#1 麦片财富积分
关注者: 6
回复 1# chensu 的帖子
如果要将每次循环的中间变量全部保存可以用一个向量来存储,如下所示:
Data = zeos(1,n);
for&&ii=1:n
& &val&&=& && && && && && && && & %&&中间变量
& &Data(ii) = val;& & % 保存中间变量
end
复制代码
如果要保存的中间变量时矩阵,则用元包来存储。
for&&ii=1:n
& &val&&=& && && && && && && && & %&&中间变量
& &Data{ii}= val;& & % 保存中间变量
end
复制代码
[ 本帖最后由 pzfs1016 于
16:36 编辑 ]
擅长: 动力学建模仿真,振动分析,系统辨识
可联系&&QQ
<h1 style="color:# 麦片财富积分
关注者: 5
回复 3# chensu 的帖子
你可以考虑用矩阵的形式啊。。你不是不想变c这个变量名称吗?
那你在对C赋值的时候可以写成c(i,k)这样保证C的每一行是你对应的那组i值
如果后面还要利用这个c进行计算 但是确要c是一个向量的话 你可以用c(i,:)这样进行提取 很方便。。。
<h1 style="color:# 麦片财富积分
回复 4# pzfs1016 的帖子
谢谢你的回复,对于我的这个问题,我应该把你的这段语句加在什么位置呢?
& &其次,val&&=& && && && && && && && & %&&中间变量
这句话我没看懂~~中间变量指的是每次for后的值码·~万分感谢·~
<h1 style="color:# 麦片财富积分
回复 5# Ryu_So 的帖子
谢谢你~~根据你的提示,我想到怎么搞了··万分感谢~~~
<h1 style="color:# 麦片财富积分
<h1 style="color:# 麦片财富积分
如果要将每次循环的中间变量全部保存可以用一个向量来存储,如下所示:
如果要保存的中间变量时矩阵,则用 ...
您好,您提到保存的中间变量如果是矩阵,就用元胞来存储是不是cells,您的这张贴图没有说明,可以具体说一下吗?谢谢!
Powered by

我要回帖

更多关于 matlab循环语句 的文章

 

随机推荐