我有两个向量,v1 (1x9)
和v2 (1x4)
。
我必须编写一个带有两个输入的函数(x,y)
和out
的输出。
x
应该是x
中的索引号v1
。
y
应该是y
中的索引号v2
。
该函数应将xth
中的v2
元素替换为yth
中的v1
元素,并将新的v2
作为输出。
举个例子:
v1=[1 2 3 4 5 6 7 8 9];
v2=[1 2 3 4];
out = myfun(7,2);
然后输出应该是
out = [1 7 3 4];
下次x=9
和y=1
out = myfun(9,1);
out = [9 7 3 4];
我的主要计划理念是
[M Z] =测试(A,q) A是矩阵(mxn) q是长度为m的向量 I = [1:M]; J = [1:N]; C(:,J)= Q / A(:,J); 找到c中的最小元素。例如,它是c(I,j) X = I;和y = j; g i = [1:x-1,x + 1:m]; j = [1:y-1,y + 1:n]; %开始新的计算 陈述...计算程序找到矩阵M而不是A和向量Z而不是q。
程序结束
现在我想写一下你之前在这个程序中做过的函数
elseif v(x) <= v1(n) this program must working continuously (holding M and Z as new A and q in input and get the minimum ratio and so the new x and y ) until v(x)==n break
请帮助
答案 0 :(得分:0)
您可以在下次通话中save
变量和load
变量。
function v2 = myfun(x,y)
v1=[1 2 3 4 5 6 7 8 9];
v2=[1 2 3 4];
if exist('v2.mat', 'file' ) ~= 0
load('v2')
end
v2(y) = v1(x);
save('v2','v2');
end
您也可以使用persistant variable
,
function out = myfun(x,y)
persistent v
if isempty(v)
v = [1 2 3 4];
end
v1=[1 2 3 4 5 6 7 8 9];
v(y) = v1(x);
out = v;
end
注意强>
mlock命令将当前运行的函数锁定在内存中,以便后续的清除函数不会将其删除。锁定内存中的函数还可以防止文件中定义的任何持久变量重新初始化。
修改强>
我从这个表单中得到了你的评论,看看它是怎么回事,
function out = test(x,y)
persistent v
if isempty(v)
v = [1 2 3 4];
end
v1 = [1 2 3 4 5 6 7 8 9];
v(y) = v1(x);
if x == 3;
out = v;
return
elseif v(y) <= v1(9)
statements
end
out = v;
end