How to write a matlab code for a given algorithm from a given array and function?
4 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
回答 (1 件)
Walter Roberson
2021 年 12 月 9 日
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 件のコメント
Walter Roberson
2021 年 12 月 10 日
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
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.
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!