在matlab中交换两个向量的元素

时间:2014-11-15 20:25:03

标签: arrays matlab function

我有两个向量,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=9y=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  

请帮助

1 个答案:

答案 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