Plotting the set of all unit vectors in different norms efficiently?

8 views (last 30 days)
I'm trying to plot the set of all unit vectors in different norms and this is the code I've managed to make so far, the issue is that using randn is going to give me lots of redundant points and I'm looking for a cleaner way to plot this without having to rely on randn. I still want the values to be represented as vectors so that I can later apply transformations on them. Any ideas?
function plotUnitNorm(normType)
X = randn(10000,2);
if(strcmp(normType,'inf'))
p_norm = max(abs(X), [], 2);
end
if(strcmp(normType,'1'))
p_norm = sum(abs(X),2);
end
if(strcmp(normType,'2'))
p_norm = sum(abs(X).^2,2).^(1/2);
end
Xn = bsxfun(@times, X, 1./p_norm);
figure(1); scatter(Xn(:, 1), Xn(:, 2), '.');
end

Answers (1)

Thiago Henrique Gomes Lobato
Just make a meshgrid and convert it to a vector
%X = randn(10000,2);
step = 0.02;
[Xi,Yi] = meshgrid(-1:step:1,-1:step:1);
X = [Xi(1:end)',Yi(1:end)'];
if(strcmp(normType,'inf'))
p_norm = max(abs(X), [], 2);
end
...
  1 Comment
David Rannaleet
David Rannaleet on 9 Feb 2020
This gives me 10201 points to plot, when the randn method gives me 10000. So this seems to be even more inefficient plottingwise, I also get blindspots near the corners of the 1-norm and inf-norm using this method.

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!