How can put the values inside tolerances?

for i=1:length(As1)
[vq]=dd(Vs1,As1(i));
As = vq.*(Us(j).^2)./(16.*(pi.^2).*msksi.*fs1(j));
res1=As1(i)-As;
if abs(res1)<0.01
As1(i)=As;
Us(j)=Vs.*fs(j);
break
end

11 件のコメント

KL
KL 2017 年 10 月 19 日
編集済み: KL 2017 年 10 月 19 日
what's myarray? I didn't ask you last time.
theintern
theintern 2017 年 10 月 19 日
myarray is data that I attached .
KL
KL 2017 年 10 月 19 日
and what is digdata2? If you have problems with fs1, you should trace it back there, I suppose.
theintern
theintern 2017 年 10 月 19 日
Thank you, I attached all of codes. digdata2 is same with digdata except datas. I use myarray in digdata and datas2 in digdata2.
Rik
Rik 2017 年 10 月 19 日

This is not a free private consultancy forum. It is frowned upon to remove a question once you have a solution. It is really rude to do so. If you want to keep solutions to your problems private, hire a private consultant.

theintern
theintern 2017 年 10 月 19 日
編集済み: theintern 2017 年 10 月 19 日
Sorry, you misunderstood.. The place where I work said it should be private, and then I had to delete it. But in the comments there are still everything. This is not what you think. Thanks to everyone who helped me.
Jan
Jan 2017 年 10 月 19 日
@theintern: Your excuse is welcome. Thanks for this. You have learned now, that deleting question is disliked massively here for good reasons. But it can happen, that you have published something without knowing, that it is a private property. Nevertheless, this is the world wide web, not a playground. You can still find the removed details in e.g. Google'c cache. It is not a secret that internet users have to think at least twice, before they publish anything.
Remember, that you agreed to the terms of use. Read it again, the part "Contents" is important here. The admins and editors can restore your question, and if you do not provide a good reasons and excuse, they will.
Please replace "deleted" by a short statement, which calms down Rik and convinces e.g. me not to restore the original question. But the admins and other editors will decide by their own.
theintern
theintern 2017 年 10 月 19 日
I apologize to everyone, I am in a difficult situation. I wasn't know it and the thing that I want to do was not that. Thanks for understanding.
Jan
Jan 2017 年 10 月 20 日
My opinion: Okay. @Rik: Perhaps you want to remove the flag now?
KL
KL 2017 年 10 月 20 日
編集済み: KL 2017 年 10 月 20 日
I have removed the equations and replaced them with dummy functions.
@theintern: No hard feelings, this is an open forum and we are all volunteers here just because we like what we do and to share the knowledge and learn together.
These things can happen, not to mention you'd have been stressed to finish your task before the deadline. You have posted your question with fairly decent descriptions (compared to homework questions which we see on daily basis) with whatever you've tried. But next time, if the code is not allowed to be posted online, try to emulate it as a minimal problem so we can understand your original situation and help you. Good luck!
Rik
Rik 2017 年 10 月 20 日
I agree with Jan and KL. Sweating it is never nice, so you should learn from it, which I think you did.

サインインしてコメントする。

 採用された回答

KL
KL 2017 年 10 月 19 日
編集済み: KL 2017 年 10 月 20 日

1 投票

Firstly, you don't need those digdata, digdata2 functions. You're code is very slow because of them. You're loding the same mat files again and again for more than 40000 times. secondly, you should move those lines outside the inner loop, why do the same thing 201 times everytime?!.
So here's the cleaned up code, this is faster so it's much easier now to figure out what's your problem.
ms=1;
msksi=0.013;
Vs1=5.5;
As1=0.05:0.005:1.05;
fs1=0.5:0.005:1.5;
%load the data only once!!
m = load('myarray.mat');
myarray = m.myarray;
d = load('datas2.mat');
datas2 = d.datas2;
loop=0;
for i=1:length(As1)
%do it here, why repeat the very same thing 200 times everytime!
vq(i) = griddata(myarray(:,1),myarray(:,2),myarray(:,3),Vs1,As1(i));
vq2(i) = griddata(datas2(:,1),datas2(:,2),datas2(:,3),Vs1,As1(i));
for j=1:length(fs1)
Us(j)=Vs1.*fs1(j);
As(i,j) = func_find_As(vq(i),Us(j),mksi,fs1(j));
fs(i,j) = func_find_fs(vq2(i),Us(j),ms,As1(j));
[res1(i,j), res2(i,j)] = calculateRes(As(i,j),As1,fs(i,j),fs1);
[As1, fs1, Us] = checkTolerance(res1,res2);
end
loop=loop+1;
end

6 件のコメント

theintern
theintern 2017 年 10 月 19 日
Ok, thank you so much to make it easy. I will work on it.
theintern
theintern 2017 年 10 月 19 日
But still, I can't see the problem.
KL
KL 2017 年 10 月 19 日
Check my updated code. Here you see the crucial variables as 201x201 matrix. You can proceed from here on. As you can see, at no point you get res1 and res2 below 0.01, which makes me think either you've got some equations wrong or something to do with your parameters.
theintern
theintern 2017 年 10 月 19 日
Ok thank you so much! I will check the equations and datas. Thanks for all of this.
theintern
theintern 2017 年 10 月 20 日
I am really appreciated @KL ! Thank you so much, I learned many things thanks to you.
KL
KL 2017 年 10 月 20 日
You're very welcome!

サインインしてコメントする。

その他の回答 (1 件)

Rik
Rik 2017 年 10 月 19 日

0 投票

What do you mean, it doesn't stop? These are for-loops, so they will exit. Do you mean you want to break out of both loops at the same time? If that is the case, the code structure below should help.
BreakLoop=false;
for i=1:length(As1)
if BreakLoop,break,end
for j=1:length(fs1)
...
if abs(res1)<0.01 && abs(res2)<0.01
BreakLoop=true;
break
end
end
end

1 件のコメント

theintern
theintern 2017 年 10 月 19 日
I mean the fs1 value never go into tolerance.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2017 年 10 月 19 日

コメント済み:

KL
2017 年 10 月 20 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by