Hi everybody. so i'm an ultra beginner in matlab and i need your help to find a solution to the problem i have.
i'm trying to make a very simple calculations for solid state physics, it should be something like z = constant * x/y , to plot a surface graph of z, to evaluate the applicability limits of my experiment. x and y are identical vectors from 1 to 100 in steps of 1. In my mind, i think I need to build a matrix where the elements cosists in all the possible ratios between the single elements of x and y, in order to obtain my surface. I think i need to employ a for loop but i'm a bit stuck on the syntax. is there anyone that can help me? many thanks Francesco

2 Kommentare

M
M am 11 Jan. 2018
Did you already read the documentation ?
If yes, what have you tried and what is your problem exactly ?
Bruccio
Bruccio am 11 Jan. 2018
yes, i read the documentation. i can't formalize decently the loop so that the matrix is filled with the values i refer to in my question. my current code is
f = zeros (100, 100) %I create the matrix that will lateley be filled with the values x = (1: 1: 100) %create the vectors
for w = (:, x)
for s = (:, x) f (:, x) = w/s end
of course MATAB tells me that : is not a valid my skill and experience in matlab are EXTREMELY limited and i'm still trying to figure out how coding works. i've seen a lot of tutarials and read a lot of voices, still need to figure out how to translate everything into code

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

M
M am 11 Jan. 2018
Bearbeitet: M am 11 Jan. 2018

4 Stimmen

f = zeros (100, 100) %I create the matrix that will lately be filled with the values
Correct, but you don't have to define your x vector to do the for loop.
If you want to loop over 100 element in step of one, you can write it like :
for i=1:1:100
for i=1:100
Both solution are the same because default step is 1.
But you should start to write the program you want to use, and then convert it into Matlab language.

5 Kommentare

Bruccio
Bruccio am 11 Jan. 2018
Bearbeitet: Bruccio am 11 Jan. 2018
thanks for the advice. i don't know any coding language, i'm writing directly into MATLAB...i still don't get what is wrong with my code. it doesn't accept the colon operator. i know i can operate with both colums or row, in this case i'm basically telling him to go to fill the nth (1<=n<=100) with the result of the w/s operation, with w = nx. that should do the trick, but it doesn't work. chnanged my code to
for w = (1 : 1 : 100)
for s = (1 : 1 : 100)
f (:, x) = w/s
end
no error messages, but nothing happens to the matrix
M
M am 11 Jan. 2018
Bearbeitet: M am 11 Jan. 2018
I don't really get hat you're are trying to do
i don't know any coding language : just write it in english, like :
Step 1 : create a matrix f of dimension (2,2)
Step 2 : for i=[1 2 3 4]
Compute z=1/i;
end for
Step 3 : Assign to the first element of f the first element of z
Bruccio
Bruccio am 11 Jan. 2018
i want to obtain the following matrix
1 1/2 1/3 1/4 ... 1/100
2 2/2 2/3 2/4 ... 2/100
3 3/2 3/3 3/4 ... 3/100
4 4/2 4/3 4/4 ... 4/100
.
.
.
100 100/2 100/3 100/4 ... 100/100
maybe i should have written this from the beginning...sorry
M
M am 11 Jan. 2018
Bearbeitet: M am 11 Jan. 2018
Ok, it is clear now.
So, the way you initialize your matrix is ok.
f = zeros (100, 100);
what you can do, is to loop over 100 elements, for example for each row, and set each row to the desired value. Something like :
f=zeros(100,100);
for i = ... % loop over 100 elements
% i should take value 1, 2,3 ...
% then you can access ith row of f with f(:,i)
f(:,i) = ... % set the desired value for each row
% for example, your first row can be defined as
% f(:,1)=[1:100]'
end % end of for loop
f % display the result
Bruccio
Bruccio am 11 Jan. 2018
exactly. Thanks a lot man. you're my favourite person of the week.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 11 Jan. 2018

Kommentiert:

am 11 Jan. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by