Filter löschen
Filter löschen

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

7 Ansichten (letzte 30 Tage)
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
Index exceeds the number of array elements. Index must not exceed 0.
g % to get the final result g = {5, 7, 12, 10, 9}
% subfunction
function y = g(i,j)
y = i+j+1;
end

Antworten (1)

Walter Roberson
Walter Roberson am 9 Dez. 2021
MATLAB does not permit using () to create pairs.
MATLAB does not have a "tuple" datatype. The closest equivalent for it are vectors (for homogenous numeric data types) or cell array vectors (for mixed data)
MV = {[1,3], [2,4], [5,6], [5,4], [7,2]}
  2 Kommentare
HAT
HAT am 9 Dez. 2021
Bearbeitet: HAT am 9 Dez. 2021
@Walter Roberson I've edited now. But it has still an error.
Walter Roberson
Walter Roberson am 10 Dez. 2021
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
Index exceeds the number of array elements. Index must not exceed 0.
g % to get the final result g = {5, 7, 12, 10, 9}
% subfunction
function y = g(i,j)
y = i+j+1;
end
This makes sense. You start out MV as empty, {}, so MV{1} does not exist and so you cannot isempty() it.
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. }
MV_h is not the same as MV_0, and you have not defined MV_h . If MV_h is intended to represent MV indexed at h then you have the problem that MV indexed at 1 has not been defined since you initialized MV at 0.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by