簡體   English   中英

在Matlab中使用for循環生成矩陣

[英]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_gy_f == y_gy_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM