メインコンテンツ

結果:

Fox Devices
Fox Devices
最後のアクティビティ: 2024 年 8 月 28 日

It's been over six years since I've written any serious MATLAB code, so I thought it would be fun to see how easily ChatGPT could help me out. While others have probably already used ChatGPT to generate MATLAB code, I didn't find any evidence of it when I searched through the ThingSpeak forum. That inspired me to post an example to get people thinking about it.
This example reads four temperature fields from the same channel and plots them on a single graph.
My ChatGPT prompt:
The prompt is pretty straightforward and essentially walks through all the elements of the chart that I wanted. It's also important to consider any filtering or "data cleansing" that should be done. Since this was my first time doing this, I decided to use an existing plot I was already familiar with as my "target state".
The prompt: "I would like you to generate some MATLAB code to create what is called a MATLAB Visualization. Its purpose will be to generate a chart of 4 fields found in a ThingSpeak channel. The ThingSpeak channel name is "Nest Nanny 2 (NN-02)" and its channel id (needed for the code) is xxxxxxx. The read api key is XXXXXXXXXXXXXXXX. The chart title should be "Nest Nanny 02 (NN-02) Todays Temperature Readings" It should plot data from 4 fields (field 3 - 6) who's names are "Surface Temp", "1/4 Temp", "3/4 Temp", and "Deep Temp". I would like the plot lines for these 4 fields to be different colors (red, orange, cyan, and blue) but on the same chart. I would like Temperature in Fahrenheit to be on the Y axis and Time on the x axis. I would like it to display the last 100 data points. I'd like to use this colororder. colororder(["#FF0000","#FFBB00","#00BBFF", "#0000FF"]) I would like the legend to be to the right of the chart, not contained within the chart. No temperature data should have a value of 50 or less and we can assume it's a sensor issue when this is observed. If a data value is 50 or less, use the value of it's nearest (in the time series) non-zero, non-negative value for that field. The data is stored in the channel as Fahrenheit and does not need to be converted from Celsius. "
Because I did this exercise using an existing plot and had a clear objective in mind, it was relatively quick to iterate four or five times with ChatGPT to refine my prompt. In just a few minutes, the generated plot almost perfectly matched my existing plot. (I xxxx'ed out the channel ID and API key before posting.) For someone who now only occasionally uses MATLAB, this approach saves time and will hopefully allow me to tap into elements of MATLAB that are now beyond my skill level and memory. ;)
ChatGPT generated MATLAB code:
% MATLAB code to create a ThingSpeak Visualization for temperature readings
% Define channel ID and Read API Key
channelID = xxxxxxx;
readAPIKey = 'XXXXXXXXXXXXXXXX';
% Number of data points to retrieve
numPoints = 100;
% Read data from the ThingSpeak channel for fields 3 to 6
[data, time] = thingSpeakRead(channelID, ...
'Fields', [3 4 5 6], ...
'NumPoints', numPoints, ...
'ReadKey', readAPIKey);
% Replace any value 50 or less with the nearest non-zero, non-negative value
for i = 1:size(data, 2)
% Identify indices where the data is 50 or less
badIndices = find(data(:,i) <= 50);
% Identify indices where the data is valid (greater than 50)
validIndices = find(data(:,i) > 50);
% Interpolate to replace bad values
if ~isempty(validIndices)
data(badIndices, i) = interp1(validIndices, data(validIndices, i), badIndices, 'linear', 'extrap');
end
end
% Plot the data
figure;
colororder(["#FF0000","#FFBB00","#00BBFF", "#0000FF"]); % Set the color order
plot(time, data(:,1), 'LineWidth', 2); hold on;
plot(time, data(:,2), 'LineWidth', 2);
plot(time, data(:,3), 'LineWidth', 2);
plot(time, data(:,4), 'LineWidth', 2);
hold off;
% Add labels and title
xlabel('Time');
ylabel('Temperature (°F)');
title('Nest Nanny 02 (NN-02) Todays Temperature Readings');
% Add legend and move it to the right of the chart
legend({'Surface Temp', '1/4 Temp', '3/4 Temp', 'Deep Temp'}, ...
'Location', 'eastoutside');
% Format the time on the x-axis
datetick('x', 'HH:MM:SS', 'keepticks');
grid on;
% Adjust the figure for better readability
set(gca, 'FontSize', 12);
Plot Comparison:
I am creating an ESP32 device which will upload data to thingspeak channel and I want the data to be displayed on my website after login. I have succesfully completed the first part of uploading the data to thingspeak. Any suggestions with second part will be very much appreciated.
Hassan Ali
Hassan Ali
最後のアクティビティ: 2024 年 8 月 21 日

Hello everyone,
I have an EV model, and I would like to calculate its efficiency, i.e., inverter efficiency, motor efficiency and motor efficiency, and I would also like to draw its efficiency map. What approaches can I use to achieve the said objectives.
For now,
  1. I have connected a power sensor at the battery side, which provides a average power at 0.001 sec.
  2. A three-phase power sensor at inverter's output, which apparantly provides higher power than input.
  3. A rotational power sensor, which also provides averaged mechanical power at 0.001 sec.
Following are the challenges which I am facing.
  1. Higher inverter power.
  2. Negative power as well, depending on the drive cycle especially when torque is negative during deceleration.
I am attaching the EV model. Your guidance on this will be highly appreciated.
Helmut
Helmut
最後のアクティビティ: 2024 年 8 月 20 日

Hi,
I tried several times to clear my channel data.
I would expect, when I click on Channel settings-clear channel all data from the channel is gone.
For me the data stay in. Delete channel works fine.
Is there a trick?
many thanks for your help
HEP
Matthew Rademacher
Matthew Rademacher
最後のアクティビティ: 2024 年 8 月 19 日

So generally I want to be using uifigures over figures. For example I really like the tab group component, which can really help with organizing large numbers of plots in a manageable way. I also really prefer the look of the progress dialog, uialert, confirm, etc. That said, I run into way more bugs using uifigures. I always get a “flicker” in the axes toolbar for example. I also have matlab getting “hung” a lot more often when using uifigures.

So in general, what is recommended? Are uifigures ever going to fully replace traditional figures? Are they going to become more and more robust? Do I need a better GPU to handle graphics better? Just looking for general guidance.

Fox Devices
Fox Devices
最後のアクティビティ: 2024 年 9 月 19 日

I'm almost embarressed enough to not ask this. :) I assumed sorting the "Updated" column in the "My Channels" view would sort my channels based on when data was last written to (last updated to) the channel
However, I have channels that have received date in August and yet the date/time stamp in the Uodated column displays a June date and therefore they sort in the wrong order. Does "update" mean something other than a data update, such as a settings update? If so, if there a way to sort the channels by the more recent data update?
Salam Surjit
Salam Surjit
最後のアクティビティ: 2024 年 11 月 3 日

Hi everyone, I am from India ..Suggest some drone for deploying code from Matlab.
Vinod
Vinod
最後のアクティビティ: 2025 年 2 月 9 日

With a deployment of ThingSpeak on August 15th, 2024, we are using a new library for visualization of ThingSpeak channel charts. This should require no changes on your part. If you notice any discrepancies/differences in your channel visualization, please post a screenshot on this thread.
Zahraa
Zahraa
最後のアクティビティ: 2024 年 8 月 14 日

Hello :-) I am interested in reading the book "The finite element method for solid and structural mechanics" online with somebody who is also interested in studying the finite element method particularly its mathematical aspect. I enjoy discussing the book instead of reading it alone. Please if you were interested email me at: student.z.k@hotmail.com Thank you!
David
David
最後のアクティビティ: 2024 年 8 月 8 日

A library of runnable PDEs. See the equations! Modify the parameters! Visualize the resulting system in your browser! Convenient, fast, and instructive.
Vinod
Vinod
最後のアクティビティ: 2024 年 8 月 1 日

Due to API changes at X, formerly known as Twitter, the integration between ThingSpeak and X, specifically the ThingTweet functionality, was not operational for a number of months. As of August 1st, 2024, the ThingTweet functionality is being deprecated.
The alternative, which requires manual steps due to X requiring manual application for a developer account, is to use the TWITTER function from Datafeed toolbox in MATLAB code. You can then create a React that is associated with this MATLAB code to post to X.
supercomputers
supercomputers
最後のアクティビティ: 2024 年 11 月 6 日

hello i found the following tools helpful to write matlab programs. copilot.microsoft.com chatgpt.com/gpts gemini.google.com and ai.meta.com. thanks a lot and best wishes.

Hi everyone,

I've recently joined a forest protection team in Greece, where we use drones for various tasks. This has sparked my interest in drone programming, and I'd like to learn more about it. Can anyone recommend any beginner-friendly courses or programs that teach drone programming?

I'm particularly interested in courses that focus on practical applications and might align with the work we do in forest protection. Any suggestions or guidance would be greatly appreciated!

Thank you!

Peter Hsi
Peter Hsi
最後のアクティビティ: 2024 年 7 月 29 日

I use "x = ThingSpeak.writeFields(myChannelNumber1, myWriteAPIKey1);" in my code to update the ThingSpeak channel. 4 fields are associated with this channel. This statement is executed about once every 5 minutes.
Roughly 60% of the time, I got an error message "HTTP error code -301". The other 40% of time the channel update is successful. What does the "HTTP error code -301" mean? Any suggestion on how to improve the success rate of the channel update
I have picked the title but don't know which direction to take it. Looking for any and all inspiration. I took the project as it sounded interesting when reading into it, but I'm a satellite novice, and my degree is in electronics.
Muhammad
Muhammad
最後のアクティビティ: 2024 年 8 月 26 日

"What are your favorite features or functionalities in MATLAB, and how have they positively impacted your projects or research? Any tips or tricks to share?
Hans Scharler
Hans Scharler
最後のアクティビティ: 2025 年 7 月 3 日

Check out the LLMs with MATLAB project on File Exchange to access Large Language Models from MATLAB.
Along with the latest support for GPT-4o mini, you can use LLMs with MATLAB to generate images, categorize data, and provide semantic analyis.
Run it now by clicking Open in MATLAB Online, signing in, and using your API Key from OpenAI.
Athanasios Paraskevopoulos
Athanasios Paraskevopoulos
最後のアクティビティ: 2024 年 7 月 23 日

Gabriel's horn is a shape with the paradoxical property that it has infinite surface area, but a finite volume.
Gabriel’s horn is formed by taking the graph of with the domain and rotating it in three dimensions about the axis.
There is a standard formula for calculating the volume of this shape, for a general function .Wwe will just state that the volume of the solid between a and b is:
The surface area of the solid is given by:
One other thing we need to consider is that we are trying to find the value of these integrals between 1 and . An integral with a limit of infinity is called an improper integral and we can't evaluate it simply by plugging the value infinity into the normal equation for a definite integral. Instead, we must first calculate the definite integral up to some finite limit b and then calculate the limit of the result as b tends to :
Volume
We can calculate the horn's volume using the volume integral above, so
The total volume of this infinitely long trumpet isπ.
Surface Area
To determine the surface area, we first need the function’s derivative:
Now plug it into the surface area formula and we have:
This is an improper integral and it's hard to evaluate, but since in our interval
So, we have :
Now,we evaluate this last integral
So the surface are is infinite.
% Define the function for Gabriel's Horn
gabriels_horn = @(x) 1 ./ x;
% Create a range of x values
x = linspace(1, 40, 4000); % Increase the number of points for better accuracy
y = gabriels_horn(x);
% Create the meshgrid
theta = linspace(0, 2 * pi, 6000); % Increase theta points for a smoother surface
[X, T] = meshgrid(x, theta);
Y = gabriels_horn(X) .* cos(T);
Z = gabriels_horn(X) .* sin(T);
% Plot the surface of Gabriel's Horn
figure('Position', [200, 100, 1200, 900]);
surf(X, Y, Z, 'EdgeColor', 'none', 'FaceAlpha', 0.9);
hold on;
% Plot the central axis
plot3(x, zeros(size(x)), zeros(size(x)), 'r', 'LineWidth', 2);
% Set labels
xlabel('x');
ylabel('y');
zlabel('z');
% Adjust colormap and axis properties
colormap('gray');
shading interp; % Smooth shading
% Adjust the view
view(3);
axis tight;
grid on;
% Add formulas as text annotations
dim1 = [0.4 0.7 0.3 0.2];
annotation('textbox',dim1,'String',{'$$V = \pi \int_{1}^{a} \left( \frac{1}{x} \right)^2 dx = \pi \left( 1 - \frac{1}{a} \right)$$', ...
'', ... % Add an empty line for larger gap
'$$\lim_{a \to \infty} V = \lim_{a \to \infty} \pi \left( 1 - \frac{1}{a} \right) = \pi$$'}, ...
'Interpreter','latex','FontSize',12, 'EdgeColor','none', 'FitBoxToText', 'on');
dim2 = [0.4 0.5 0.3 0.2];
annotation('textbox',dim2,'String',{'$$A = 2\pi \int_{1}^{a} \frac{1}{x} \sqrt{1 + \left( -\frac{1}{x^2} \right)^2} dx > 2\pi \int_{1}^{a} \frac{dx}{x} = 2\pi \ln(a)$$', ...
'', ... % Add an empty line for larger gap
'$$\lim_{a \to \infty} A \geq \lim_{a \to \infty} 2\pi \ln(a) = \infty$$'}, ...
'Interpreter','latex','FontSize',12, 'EdgeColor','none', 'FitBoxToText', 'on');
% Add Gabriel's Horn label
dim3 = [0.3 0.9 0.3 0.1];
annotation('textbox',dim3,'String','Gabriel''s Horn', ...
'Interpreter','latex','FontSize',14, 'EdgeColor','none', 'HorizontalAlignment', 'center');
hold off
daspect([3.5 1 1]) % daspect([x y z])
view(-27, 15)
lightangle(-50,0)
lighting('gouraud')
The properties of this figure were first studied by Italian physicist and mathematician Evangelista Torricelli in the 17th century.
Acknowledgment
I would like to express my sincere gratitude to all those who have supported and inspired me throughout this project.
First and foremost, I would like to thank the mathematician and my esteemed colleague, Stavros Tsalapatis, for inspiring me with the fascinating subject of Gabriel's Horn.
I am also deeply thankful to Mr. @Star Strider for his invaluable assistance in completing the final code.
References:
  1. How to Find the Volume and Surface Area of Gabriel's Horn
  2. Gabriel's Horn
  3. An Understanding of a Solid with Finite Volume and Infinite Surface Area.
  4. IMPROPER INTEGRALS: GABRIEL’S HORN
  5. Gabriel’s Horn and the Painter's Paradox in Perspective
When it comes to MOS tube burnout, it is usually because it is not working in the SOA workspace, and there is also a case where the MOS tube is overcurrent.
For example, the maximum allowable current of the PMOS transistor in this circuit is 50A, and the maximum current reaches 80+ at the moment when the MOS transistor is turned on, then the current is very large.
At this time, the PMOS is over-specified, and we can see on the SOA curve that it is not working in the SOA range, which will cause the PMOS to be damaged.
So what if you choose a higher current PMOS? Of course you can, but the cost will be higher.
We can choose to adjust the peripheral resistance or capacitor to make the PMOS turn on more slowly, so that the current can be lowered.
For example, when adjusting R1, R2, and the jumper capacitance between gs, when Cgs is adjusted to 1uF, The Ids are only 40A max, which is fine in terms of current, and meets the 80% derating.
(50 amps * 0.8 = 40 amps).
Next, let’s look at the power, from the SOA curve, the opening time of the MOS tube is about 1ms, and the maximum power at this time is 280W.
The normal thermal resistance of the chip is 50°C/W, and the maximum junction temperature can be 302°F.
Assuming the ambient temperature is 77°F, then the instantaneous power that 1ms can withstand is about 357W.
The actual power of PMOS here is 280W, which does not exceed the limit, which means that it works normally in the SOA area.
Therefore, when the current impact of the MOS transistor is large at the moment of turning, the Cgs capacitance can be adjusted appropriately to make the PMOS Working in the SOA area, you can avoid the problem of MOS corruption.
Hi everyone,
I need deep orientation to make calculation of speed and Angle for the absolute encoder RM22SC with signal (data+, Data-, Clock +, Clock -) using Launchpad F28379D and Simulink.
I did interface the absolute encoder with IC DS26LS32CN and I did get signal Data and Clock. I did use the GPIO20 for Data and GPIO21 for Clock and connect both to the Matlab Function block to get as output the position. See the code on attached. The output of the Matlab function times 2*pi/8192 to get the angle. However, I don't get anything as value.
Matlab Fuction Block code
function position = decodeSSI(data, clock)
%#codegen
persistent bitCounter shiftRegister prevClock
if isempty(bitCounter)
bitCounter = uint32(0);
shiftRegister = uint32(0);
prevClock = uint32(0);
end
% Parameters
numBits = 13; % Number of bits in the SSI word
% Rising edge detection for clock
clock = uint32(clock); % Ensure clock is of type integer
clockRisingEdge = (clock == 1) && (prevClock == 0);
prevClock = clock;
if clockRisingEdge
bitCounter = bitCounter + 1;
% Shift in the data bit
shiftRegister = bitor(bitshift(shiftRegister, 1), uint32(data));
% Check if we have received the full word
if bitCounter == numBits
position = shiftRegister;
% Reset for the next word
bitCounter = uint32(0);
shiftRegister = uint32(0);
else
position = uint32(0); % or NaN to indicate incomplete data
end
else
position = uint32(0); % or retain the last valid position
end
end