Hello,
I want to save the data of a 8x1 matrix to the workspace from a function. However, the variables in the matrix change every time the function is called, while the name of the Matrix stays the same.
I tried assignin. This works well but now I want to create a matrix consisting of a row of 8x1 variables. I actually want the following;
assignin('base','Pars2(end+1,:)',Pars)
But this doesnt work.
Can anybody help me? Thanks in advance!
Greetings Boudewijn

 채택된 답변

Iain
Iain 2014년 2월 20일

0 개 추천

You have three options.
1. Use evalin or assignin correctly to put the variable into the base workspace.
2. Change your function to a script, and just directly work in the calling workspace.
3. Return everything you want your function to return, as an argument.
e.g.
function [cosine_result, sine_result, tangent_result] = trigfcns(angles)
cosine_result = cos(angles);
sine_result = sin(angles);
tangent_result = cosine_result ./ sine_result;
Then call your function like:
[cosses, sines, tans] = trigfcns([45 31 91 64]*pi/180);
From a programming quality/best practice point of view, the advice would be to just use the 3rd option. - Using varargout & nargout as ways of not returning optional output.

댓글 수: 1

thanks for the help!
I finally created a global variable and did the following
global Pars2;
Pars2(end+1,1:length(Pars)) = Pars;
that did the job:)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Dishant Arora
Dishant Arora 2014년 2월 20일

0 개 추천

As the documentation suggests, 2nd parameter has to be only the variable name, it cannot have any indices. Better assign that value to a new variable in workspace and later on add it to existing matrix.
assign('base' , 'newVar', val);
existingMat(end+1,:)=newVar;

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

질문:

Bou
2014년 2월 20일

댓글:

Bou
2014년 2월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by