简体   繁体   中英

How to write a matlab code for a given algorithm from a given array and function?

I would like to write a matlab code to calculate the value of a function of two variables g(i,j) = i + j + 1 for every pair (i,j) in the set MV = {(1,3), (2,4), (5,6), (5,4), (7,2)} so that the output results in g = {5, 7, 12, 10, 9} based on the following algorithm:

Step 0.  MV_0 = empty set;
Step 1.   h=1;
Step 2.  while MV_h ~= empty set {
Step 3.     for every (i,j) in MV {
Step 4.            g(i,j)
Step 5.     }
Step 6.    h=h++
Step 7.      }

So far I have tried the following, but I couldn't figure it out. Please any hint/assistance. Thanks in advance!

MV = {}; % Step 0
h = 1; % Step 1
%  MV= intersect(r(r==1),s(s==3)) 
while isempty(MV{h})==0 % MV{h} is nonempty from Step 2
    MV = {[1,3], [2,4], [5,6], [5,4], [7,2]}
    
    % Step 3,  for every (i,j) in EMV{h}
    for i=1:length(MV)
        for j = 1:length(MV)     
              MV{h} = g(i,j); % Step 4    
        end
    end
    h = h+1;   % Step 6
end

g % to get the final result g = {5, 7, 12, 10, 9}

% subfunction
function y = g(i,j)
y = i+j+1;
end

I guess u need the following:

function Camp()
clear,clc
MV = {}; 
h = 1; 
while isempty(MV)
    
    MV = {[1,3], [2,4], [5,6], [5,4], [6,2]};
    
    for m = 1:length(MV) 
        i = MV{m}(1);
        j = MV{m}(2);
       MV{h} = g(i,j)
       h = h+1;   
    end
    
end
end

% sub function
function y = g(i,j)
y = i+j+1;
end

Output is:

MV = 

  Columns 1 through 3

    [5]    [7]    [12]

  Columns 4 through 5

    [10]    [9]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM