How do I plot a graph linearly spaced by N elements?

I have to create a poligonal graph and calculate its lenght, and this is the first step: evenly spacing the graph of the f = x^2 function. I wrote the code and it gives me just a blank plot. Here's the code, I don't know what's wrong with it. I'd ble glad if someone helped me.
clc; clear all; close all;
function f = exponecial(N)
for x = linspace(0, 1, N)
f = x^2;
endfor
end
figure (1);
hold;
for N = 0:1:10
plot(N, exponecial(N))
endfor

3 Comments

There is quite a lot wrong with this code:
  • endfor is not valid MATLAB syntax
  • you are mixing some vector notation and scalar notation
  • it is not clear how you are calling this code, and where you are placing the function definition
  • you don't really need the subfunction at all
Without a doubt, someone here could (and probably will) just rewrite your code from scratch, and you'll have your answer. But it seems to me that you have learned a different language previously, and are trying to apply some MATLAB coding ideas to what you know. So, if you actually want to learn MATLAB, and not just have someone do your work for you, I would recommend the MATLAB Onramp tutorial.
It seems you know microsoft Visual Basic programming well. But in matlab environemnt those syntax may not work correctly.
Actually I`m using Octave cause I cant afford the original MATLAB software. The curious thing is that I just addapted the same structure from a previous code I`ve done before, a code that worked just as I wanted... As you said before, someone just solved the problem below. I aprecciate the help.

Sign in to comment.

 Accepted Answer

Try this:
% Demo by Image Analyst
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 25;
fprintf('Beginning to run %s.m ...\n', mfilename);
legendStrings = cell(1, 10);
for N = 1:10
[x, f] = exponecial(N);
plot(x, f, '.-', 'LineWidth', 2, 'MarkerSize', 40)
hold on;
legendStrings{N} = sprintf('N = %d', N);
end
grid on;
xlabel('x', 'fontSize', fontSize);
ylabel('f', 'fontSize', fontSize);
legend(legendStrings, 'Location', 'northwest');
g = gcf;
g.WindowState = 'maximized'
fprintf('Done running %s.m.\n', mfilename);
function [x, f] = exponecial(N)
x = linspace(0, 1, N);
f = x.^2;
end

1 Comment

I`m sorry to say that, but I`m using Octave (can`t afford MatLab) and it`s still not running...

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!