2016-08-17 8 views
0

에 다른 m 파일간에 변수를 공유하는 방법은 같은 변수를 사용하여 이러한 변수에 대한 계산을 수행 삼m 파일이 있습니다. 모든 변수를 선언 한 인덱스 m 파일을 만들었고 변수 이름을 사용하여 나머지 m 파일에 변수를 공유 할 수 있습니다. 내 문제는 변수 이름이 너무 자주 변경되고 나서 이러한 모든 파일에서 변수 이름을 수동으로 변경해야한다는 것입니다. 인덱스 m 파일에서 변수 이름과 값을 자동으로 가져와 나머지 m 파일에 넣을 수있는 Matlab 스크립트를 만들려면 어떻게해야합니까?matlab에

+0

한 가지 해결책은 함수를 사용하고 이러한 함수의 인수로 변수를 사용하는 것입니다. 이것이 어떻게 효율적으로 이루어질 수 있습니까? –

+2

이 문제에 대한 고전적인 해결책은 다른 .m 파일을 함수로 만드는 것입니다. 따라서 myfile.m에서 스크립트를 실행하면 myfile2.m을 myfile2()라고 부릅니다. 당신은 코드이 내 m 파일 모두 가까운 %의 일부 아이오와 – Finn

+0

의 작은 예를 게시 할 수 있습니다; 모두 지우기; clc; A0 = 0; A1 = 6; A2 = 12; A3 = 13; ('exp.mat ","A0 ","A1 ","A2 ","A3 ")에 저장 ; 이것이 데이터를 효율적으로 공유 할 수 없다는 것을 알고 있습니다. 그러나 나는 새로운 기능입니다. 함수를 어떻게 사용할 수 있습니까? 나에게 신생 기업을 줄 수 있니? –

답변

0

당신은 당신이 그래서 여기에 우리가 갈 수있는 곳에서 약간의 예를 필요 같은 느낌이 이동 : 먼저 다른 변수 이름으로 각 값을 호출. 동일한 유형의 값이 많은 경우 배열은 다음과 같이 더 쉽습니다.

A0=0; A1=6; A2=12 %each one with its own name 
B=zeros(16,1); %create an array of 16 numbers 
B(1)= 0; %1 is the first element of an array so care for A0 
B(2)= 6; 
B(8)= 12; 
disp(B); % a lot of numbers and you can each address individually 
disp(B(8)); %-> 12 

이 모든 것을 스크립트에 넣고 사용해 볼 수 있습니다. 이제 함수 부분에. 함수에 입력, 출력, 둘 중 하나 또는 모두가있을 수 있습니다. 데이터를 만들고 싶다면 입력은 필요 없지만 출력은 필요 없습니다. 이 저장

myfile1.m 같이

function output = myfile1() 

number=[3;5;6]; %same as number(1)=3;number(2)=5;number(3)=6 
%all the names just stay in this function and the variable name is chosen in the script 
output = number; %output is what the file will be 

end 

이 같은 myfile2.m 지금

function output = myfile2(input) 

input=input*2;%double all the numbers 
%This will make an error if "input" is not an array with at least 3 
%elements 
input(3)=input(3)+2; %only input(3) + 2; 
output = input; 

end 

나는 이것이 당신이 시작하는 희망

B=myfile1() %B will become the output of myfile1 
C=myfile2(B) %B is the input of myfile2 and C will become the output 
save('exp.mat','C') 

을 시도합니다.