2014-01-26 32 views
0

我一直在努力解決這個問題一段時間,如果有人能幫助我,我將不勝感激。我能夠生成一個10×10的矩陣,並在矩陣中隨機分配「1」。我的目標是在向量中每個元素的位置繪製一個「星號」,其值爲「1」,但我似乎無法弄清楚如何將向量映射到x-y座標系。我在下面寫的代碼在每個單元格生成一個100星的圖,並生成一個向量「v」,但我不知道如何將該圖與該向量相關聯,而不是在我的圖中有100個「星」 ,但是我有很多,在元素的相應位置有一個「1」的值。如何將矩陣映射到座標並繪製它

謝謝! 大衛 [email protected]

close all 
clear all 
clc 

a=10;b=10; 
v = zeros(a,b); 
xy = int32(randi(a, 100, 2)); 
z = randi(1, 100, 1); % 100 values. 

indexes = sub2ind([a, b], xy(:,1), xy(:,2)) 
v(indexes) = z 

m=length(v); 
ctr=0; 
for i=1:m^2 
    x_cor(i)=(i-(floor(i/m)*m))*200-100; 
    y_cor(i)=(floor(i/m)+1)*200-100; 
    for j=1:m 
     if i==j*m 
      x_cor(i)=((i-(floor(i/m)*m))*200-100)+(2*m*100); 
      y_cor(i)=(floor(i/m))*200-100; 
     end 
    end 

end 


figure(1) 

plot(x_cor,y_cor,'*'); 

grid on 

回答

0

你可以做到這一點很容易考慮到plot(A),其中A是一個矩陣,繪製了矩陣VS其索引的列,而NaN s的不是畫在:

v =[ 1  0  0  0 
    1  1  0  0 
    0  0  0  1 
    1  1  1  1 
    0  1  1  0 ]; %// example data 

v2 = double(v); %// create copy; will be overwritten 
v2(~v2) = NaN; %// change zeros to NaNs 
plot(bsxfun(@plus, fliplr(v2.'), 0:size(v,1)-1) ,'b*') 
%'// transpose and flip from left to right. 
%// Add 1 incrementally to each column to have all of them "stacked" in the plot 
axis([0 size(v,2)+1 0 size(v,1)+1]) %// set axis limits 
set(gca,'xtick',1:size(v,2),'ytick',1:size(v,1)) %// set ticks 
grid 

enter image description here

+0

感謝路易斯,哇這個情節(bsxfun .....)看起來如此複雜,我從來沒有見過這樣的事情。你能解釋一下這個過程,以及「set ticks」命令的作用嗎?我試圖找出的另一件事是,如果你看看我上面發佈的代碼,在for循環中,我試圖做的是有一個10×10(或更多的單元格)的網格,每個單元格的長度爲200並繪製該單元中間的「星」來代表風力渦輪機的位置。是否有修改你的繪圖代碼,所以它繪製在每個「明星」感謝200×200單元的中間 – Sharkbait

1

我當然可以曲解了這一點,因爲這些代碼是容易混淆的複雜,但是這是我認爲你之後。

對於a X b矩陣與一個隨機數的人的:

v = randi([0 1], a, b); 

或者對於那些特定數量n,在隨機位置:

v = zeros(a, b); 
idx = randi([1 numel(v)], n, 1); 
v(idx) = 1; % linear indexing into a matrix 

然後繪製它們在任意定標座標:

[y x] = find(v); 
x = x * xscale + xoffset; 
y = y * yscale + yoffset; 
plot(x, y, '*'); 

還是真的cheaty方式:

spy(v); 
+0

+1的'間諜(v)'的解決方案! –

+0

matlab在「x = x * xscale + xoffset;」中說錯誤線。 – Sharkbait

+0

@Sharkbait是錯誤的任何機會「這些變數名稱,一些人拔出空氣說明一個點沒有定義」?它們只是標量值的佔位符 - 例如'xscale = 200','xoffset = 100'等。 – Notlikethat