2014-09-30 39 views
-8

我寫了一個小程序來測試一些函數。是冒號記號(:)等於數組(矢量)

這是proram:

close all; 
clear all; 

f = @(x, n) power(-1,(n-1)./2) .* power(x, n) ./ factorial(n); 

n = [0,3,5,10,50,100]; 
% n = 0:10:100; 
x = linspace(0, 4*pi, 1000); 
ax = axes('nextplot', 'add'); 

for k = 1:length(n) 
    plot(ax, x, f(x, n(k)), 'displayname', ['f_', int2str(n(k)), '(x)']); 
end 

對我來說,主要的問題是,我認爲,冒號符號(1:10)definies陣列值equaliy傳播。

在我的程序中並非如此。

當我將n設置爲[0,3,5,10,50,100]並且將n設置爲0:10:100時,程序的輸出會有所不同。

在第一個版本,與陣列,該程序工作正常,但機智的第二個版本,用冒號表示法,程序不工作,它只是在0

繪製一條直線所以我的問題是這樣的方式正在發生?我的意思是如果冒號符號和數組定義是相同的爲什麼程序對冒號符號和數組符號有不同的輸出?

我錯過了什麼嗎?

謝謝!

編輯: 這是我得到的圖: 第一個id數組表示法,第二個是冒號表示法。 我使用mathlab R2013a

Array Notation

Colon notation

+0

在兩種情況下,它都會給我提供類似的輸出:幾條線被繪製,忽略虛部。也許張貼你的數字? – 2014-09-30 11:01:46

+0

@LuisMendo我已添加劇情 – depecheSoul 2014-09-30 11:06:23

+0

這與冒號表示無關。這是你的f函數給出了虛構的結果,而不是繪製的。 – Oleg 2014-09-30 11:14:13

回答

2

在你的註釋行,

% n=[0:10:100]; 

您創建了從0​​到100值的向量,以間隔10,即[0 10 20 30 40 50 60 70 80 90 100]

有了您註釋掉線,

n=[0 3 5 10 50 100]; 

您有您指定的值。

由於它們不是相同的輸入,所以不會得到相同的輸出。

+0

這是問題,謝謝! – depecheSoul 2014-09-30 11:18:07