appending element to vector

9 次查看(过去 30 天)
shobhit mehrotra
shobhit mehrotra 2015-2-4
评论: Guillaume 2015-2-4
Hello Im a diff function to estimate a derivative(du/dx), however I lose an element as excepted, now I want to add the average value of the derivative to the end of vector (du/dx) such that is the same length as u. Thanks

回答(2 个)

Guillaume
Guillaume 2015-2-4
That doesn't sound very sensible as you're mixing two different entities into a single variable, but if that's what you want to do:
x = sin(linspace(0, pi, 100)); %for example
d = diff(x);
dwithmean = [d mean(d)]
  2 个评论
shobhit mehrotra
shobhit mehrotra 2015-2-4
i have this script
for n = 1:length(dataind)
winddivergencex(n)= (diff(Ui(min(dataind{n}): (max(dataind{n})))))./(diff(longm(min(dataind{n}):(max(dataind{n})))));
winddivergencex has to contain the same number of elements as n so i want append a term to the end of the winddivergencex vector so they have the same amount of elements. Thanks
Guillaume
Guillaume 2015-2-4
Why do they have to have the same number of elements?

请先登录,再进行评论。


Michael Haderlein
As Guillaume has mentioned, that's not the usual way to go. Assume you want to plot the data (which requires equally sized arrays), these are the common options:
x=linspace(0,100);
y=x.^2;
dydx=diff(y)./diff(x);
figure, hold all
%best way: shift the x by half dx
x2=x(1:end-1)+diff(x)/2;
plot(x2,dydx)
%lazy way: just use n-1 x values
plot(x(1:end-1),dydx)
%semi-lazy way: add nan (will not be plotted)
dydx=[diff(y)./diff(x) nan];
plot(x,dydx)
When you run these lines, you see a shift between the blue line (which is technically correct) and the red/green lines (overlaying).

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by