Saving for loop value after each iteration
이전 댓글 표시
Hello everyone!
I am working on simulink MATLAB (2021b) where I am simulating a model. I am facing problem in saving the value of resistance, the code shown below give [ ] for the value of resistance.
Other two variables values are working fine for all 3 values of resistance. I am attaching my code
Any help would be appreciated! Thanks in advance
PS: The constant block picks all values of resistance at each iteration!
resistance = [0.72;0.983;0.221];
R = resistance;
for i =1:numel(R)
resistance=R(i)
simOut=sim('ModelName.slx','SimulationMode','normal')
a{i}=find(simOut,'Variable1')
b{i}=find(simOut,'Variable2')
c{i}=find(simOut,'resistance') %somewhere here
end
답변 (1개)
Image Analyst
2022년 1월 20일
Since resistance is already an array, simply delete the line where you overwrite the array with the i'th value of it:
resistance = [0.72;0.983;0.221];
R = resistance;
for i =1:numel(R)
simOut=sim('ModelName.slx','SimulationMode','normal')
a{i}=find(simOut,'Variable1')
b{i}=find(simOut,'Variable2')
c{i}=find(simOut,'resistance') %somewhere here
end
Now R and resistance both have all the original values.
댓글 수: 4
Sugar Mummy
2022년 1월 20일
Image Analyst
2022년 1월 20일
You're not showing us something. Not only are you not showing us the complete error (ALL the red text), but you're not even showing us the code. There is nothing in the code I gave that would cause that specific error. Nothing.
- Assigning the whole array resistance to a variable R would not throw that error.
- Whatever sim() returns, it's put into a new variable simOut (that is overwritten on each iteration) so that would not cause the error.
- You assigning the i'th cell of a cell array to the results of find(). Cell arrays can take anything so that wouldn't cause the error. Though I wonder if you really want ismember() or something else since find() does not take a character array as its second input - so this leads me to believe again that this is not your actual code. You can even put another cell array into a cell array so the sizes don't matter. See the FAQ:
So that means you're running some other code that is not shown here. Of course I cannot comment on any code you are not showing us.
Sugar Mummy
2022년 1월 20일
Let's see. Let's run it in MATLAB online:
resistance = [0.72;0.983;0.221];
R = resistance;
for i =1:numel(R)
resistance=R(i)
simOut=sim('ModelName.slx','SimulationMode','normal')
a{i}=find(simOut,'Variable1')
b{i}=find(simOut,'Variable2')
c{i}=find(simOut,'resistance') %somewhere here
end
Is that what you see? Anyway, I don't have Simulink so I can't run the sim() function.
카테고리
도움말 센터 및 File Exchange에서 General Applications에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!