[英]Generate matrix with for-loop in matlab
假設我有兩個函數f(x),g(x)和一個向量:
xval=1:0.01:2
對於每個單獨的x值,我想定義一個y值向量,以覆蓋由兩個函數(或者可能是一個矩陣,其中列為x值,行為y值)界定的y間隔。
我將如何創建一個可以為我處理的循環? 我自己絕對不知道,但是我敢肯定你們中的一些人會袖手旁觀。 到目前為止,我已經為這個問題出汗了幾個小時。
提前致謝。
由於您希望生成矩陣,因此我假設每個xval
f(x)和g(x)之間的值數應該相同。 讓我們稱該數目為n_pt
。 然后,我們也知道結果矩陣rng
的維數。
n_pt = 10;
xval = 1 : 0.01 : 2;
rng = zeros(n_pt, length(xval));
現在,進入循環。 一旦知道了f(x)和g(x)返回的y值是什么,就可以使用linspace
給我們提供n_pt
等間距的點。
for n = 1 : length(xval)
y_f = f(xval(n))
y_g = g(xval(n))
rng(:, n) = linspace(y_f, y_g, n_pt)';
end
這很好,因為使用linspace
您無需擔心y_f > y_g
, y_f == y_g
或y_f < y_g
。 已經全部照顧好了。
為了演示,我為xval = 1 : 0.1 : 2
和兩個正弦曲線f = @(x) sin(2 * x)
和g = @(x) sin(x) * 2
運行此示例。 使用plot(xval, rng, '*k');
繪制點plot(xval, rng, '*k');
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.