How Can I Make a Matlab Code generate multiple separate matrices

I want to generate 21 matrices from a code that are 4x4 with values in place that I can set elsewhere in the code. I don't want to type out 21 different 4x4 matrices.

답변 (2개)

Jos (10584)
Jos (10584) 2015년 3월 30일
편집: Jos (10584) 2015년 3월 30일
To generate one 4-by-4 matrix with a specific value you can use various approaches
Value = 3 ;
A = repmat(Value,4,4)
B = Value * ones(4,4)
C = zeros(4,4), C(:) = Value
You have to think about how to store several of these matrices. As planes in 3D arrays or, for instance, as cells in a cell array? The first option can only be used when all 2D matrices have the same size
Values = [3 6 99] ;
N = numel(Values)
Array3D = zeros(4,4,N) % a 4-by-4-by-3 3D array
for k=1:N
Array3D(:,:,k) = Values(k)
end
or in a cell array
Values = [7 -3 5 4]
CellArray = arrayfun(@(x) repmat(x,4,4),Values,'un',0)
disp(CellArray{1})

댓글 수: 7

I am doing an AHP so I need to store each of the matrices created as a different variable.
[a/a a/b ... b/a b/b ...
My issue is that i need the values to escalate byb 1 across the denominator and 1 down the numerator. :( anyone know AHP?
an XY problem ... :(
Stephen23
Stephen23 2015년 3월 30일
편집: Stephen23 2015년 3월 30일
"I need to store each of the matrices created as a different variable" is very likely untrue. Instead of telling us what you think you need to do, why not tell us what calculations you actually need to perform on this data and we can give some advice about the easiest ways to do this.
I have a variety of criteria that I need to compare to each other for Analytical Hierarchy Processing. So for each sub criteria I need differing values in a matrix. Sorry I wasn't meaning to be rude or facetious. I just have 21 matricies that need I need to be able to access. Preferably without writing out each matrix.
Stephen23
Stephen23 2015년 3월 30일
편집: Stephen23 2015년 3월 30일
This seems like a perfect opportunity to use a cell array to store the 21 matrices in. This would allow you to generate them in a loop, and access them use any of the many tools for working with cell arrays, such as cell array indexing.
So far you have not written any details about how these matrices are to be generated, nor about exactly how these values are to be used. This means we have given general advice, but without more specific information we cannot help much more.
The values are to be generated by the user in a GUI with relative importance to each of the other criteria available.
Also another quick question I have a table that I want to display in the GUI but it displays as an external figure. Any thoughts?
function pushbutton5_Callback(hObject, eventdata, handles)
comp1 = str2num(char(get(handles.edit7,'String')));
comp2 = str2num(char(get(handles.edit8,'String')));
comp3 = str2num(char(get(handles.edit9,'String')));
comp4 = str2num(char(get(handles.edit10,'String')));
comp5 = str2num(char(get(handles.edit11,'String')));
comp6 = str2num(char(get(handles.edit12,'String')));
comparison = [1,comp1,comp2,comp3;
(comp1)^-1, 1,comp4,comp5;
(comp2)^-1,(comp4)^-1,1,comp6;
(comp3)^-1,(comp5)^-1,(comp6)^-1,1]
f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200], 'Data', comparison)
get(handles.uitable5,'Comparison',comparison,'ColumnName',colnames);
function evaluate_Callback(hObject, eventdata, handles)
% f = figure('Position', [100 100 752 250]);
% t = uitable('Parent', f, 'Position', [25 50 700 200], 'Data', comparison)
Stephen23
Stephen23 2015년 3월 30일
편집: Stephen23 2015년 3월 30일
Read the figure documentation. Every time you call figure('Pos..',...) it will create a new figure. Instead create the figure once and then pass its handle to the plot calls and other GUI functions.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2015년 3월 30일

편집:

2023년 9월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by